[解決済み】Rails: Railsのactiverecordのモデルで属性のデフォルト値を作成するにはどうすればよいですか?[重複している]。
2022-04-14 12:52:18
質問内容
ActiveRecordで属性を定義して、その属性のデフォルト値を作りたいのですが。デフォルトでは、レコードが作成されるたびに、属性にデフォルト値が設定されるようにしたいのです。
:status
. こんなことをやってみました。
class Task < ActiveRecord::Base
def status=(status)
status = 'P'
write_attribute(:status, status)
end
end
しかし、作成時にデータベースからこのエラーを取得します。
ActiveRecord::StatementInvalid: Mysql::Error: Column 'status' cannot be null
したがって、その値は属性に適用されなかったと推定されます。
Railsでこれを行うには、どのような方法がエレガントでしょうか?
ありがとうございます。
解決方法は?
マイグレーションでカラムにデフォルトオプションを設定することができます
....
add_column :status, :string, :default => "P"
....
または
コールバックを使用することができます。
before_save
class Task < ActiveRecord::Base
before_save :default_values
def default_values
self.status ||= 'P' # note self.status = 'P' if self.status.nil? might be safer (per @frontendbeauty)
end
end
関連
-
[解決済み】bcrypt LoadError: Cannot load such file
-
[解決済み] 新規ユーザー作成時に ActiveModel::ForbiddenAttributesError が発生する。
-
[解決済み] Railsマイグレーションを利用してカラムをドロップする方法
-
[解決済み] Railsはsaveでモデル内の検証をスキップしますか?
-
[解決済み] Ruby on Railsのマイグレーションでデータベースのカラムの名前を変更するにはどうすればよいですか?
-
[解決済み] Ruby on Railsで現在の絶対URLを取得するにはどうすればよいですか?
-
[解決済み] エラーが発生しました。pgsqlをrailsで動作させようとすると、Peer authentication failed for user "postgres" と表示されます。
-
[解決済み】Rails: railsのモデルのデフォルトのソート順?
-
[解決済み】Rails: #update_attributeと#update_attributesの比較
-
[解決済み] Railsでモデルの属性を発見する方法は?
最新
-
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。Ruby on Railsの移行でデータベースカラムの名前を変更するにはどうすればよいですか?
-
[解決済み】gemのインストールができない - gemネイティブ拡張の構築に失敗 - そのようなファイルをロードできない -- mkmf (LoadError)
-
[解決済み] サーバーに接続できませんでした。そのようなファイルまたはディレクトリがありません (PG::ConnectionBad)
-
[解決済み] Railsサーバーがポートはすでに使用されていると言う、そのプロセスを殺すにはどうすればよいですか?
-
[解決済み] Rubyの文字列から日付への変換
-
[解決済み] デバイスを使用する現在のユーザーメソッド
-
[解決済み] railsでcheck_boxをcheckedにする方法は?
-
[解決済み] Heroku Error R14 (Memory quota exceeded): How do I solve this?
-
[解決済み] 属性とカラムの違いは何ですか?
-
[解決済み] Railsです。ActiveRecordでデフォルト値を設定するにはどうすればよいですか?