[解決済み] Railsでデフォルト値を設定するには?
2022-09-16 12:16:11
質問
Railsのオブジェクトにデフォルト値を設定するのに最適な方法を探しています。
私が思いつく最良の方法は、デフォルト値を
new
メソッドで設定することです。
これが許容範囲なのか、もっと良い方法があるのか、どなたかご意見をお聞かせください。
どのように解決するのですか?
Rubyにおいて「正しい」というのは危険な言葉です。 何事にも複数のやり方があるのが普通です。 もし、あなたが 常に テーブルのそのカラムのデフォルト値が必要だとわかっている場合、DBマイグレーションファイルでそれらを設定することが最も簡単な方法です。
class SetDefault < ActiveRecord::Migration
def self.up
change_column :people, :last_name, :type, :default => "Doe"
end
def self.down
# You can't currently remove default values in Rails
raise ActiveRecord::IrreversibleMigration, "Can't remove the default"
end
end
ActiveRecordはテーブルとカラムのプロパティを自動検出するので、標準的なRailsアプリでこれを使ったモデルには、同じデフォルトが設定されることになります。
しかし、特定のケースでのみデフォルト値を設定したい場合、たとえばテーブルを他のものと共有する継承モデルであれば、モデルオブジェクトの作成時にRailsのコードで直接設定することも、エレガントな方法と言えます。
class GenericPerson < Person
def initialize(attributes=nil)
attr_with_defaults = {:last_name => "Doe"}.merge(attributes)
super(attr_with_defaults)
end
end
次に
GenericPerson.new()
を実行すると、常に "Doe"属性が
Person.new()
で上書きしない限り、常に
関連
-
[解決済み] rspec 3 - クラスメソッドをスタブ化する
-
[解決済み] Rubyのswitch文の書き方
-
[解決済み] Ruby on Railsのマイグレーションでデータベースのカラムの名前を変更するにはどうすればよいですか?
-
[解決済み] Rubyでnilとemptyとblankを理解する方法
-
[解決済み] Ruby on Railsで現在の絶対URLを取得するにはどうすればよいですか?
-
[解決済み] Ruby on Railsで、DateTime、Timestamp、Time、Dateの違いは何ですか?
-
[解決済み] Railsです。ActiveRecordでデフォルト値を設定するにはどうすればよいですか?
-
[解決済み] Rails I18n バリデーション非推奨の警告
-
[解決済み】Railsの認証トークンを理解する
-
[解決済み】Rails: モデルがすでに存在するときに`rails generate scaffold`を実行するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Rails 4 RoutingError: ルートが一致しない[POST]。
-
[解決済み] ウェブパッカーがアプリケーションを見つけ出せない
-
[解決済み] 変更欄のRailsマイグレーション
-
[解決済み] Railsマイグレーションを利用してカラムをドロップする方法
-
[解決済み] Ruby: public static メソッドを作るには?
-
[解決済み] rspecにおけるassignsの意味
-
[解決済み] Railsはsaveでモデル内の検証をスキップしますか?
-
[解決済み] Railsでグループとカウント
-
[解決済み] Railsです。ActiveRecordでデフォルト値を設定するにはどうすればよいですか?
-
[解決済み] Railsのマイグレーション。カラムのデフォルト設定を元に戻す