Railsのモデルは初めてです。モデルの作成方法とそれらに列を追加する方法を知っています。今、私は列にデフォルト値を設定したいのですが、正確にそれを行うことができるのかわかりません。
新しいモデルを生成しました
Rails g model User
次に、それに列を追加しました
Rails generate migration AddNotificationEmailToUsers notification_email:boolean
ここで、Notification列のデフォルト値をtrueに設定します。同じように移行を書く方法を教えてください。ありがとうございました!!!
コマンドラインからこれを行うことはできません-移行ファイルを編集し、対応する行を次のように変更する必要があります
add_column :users, :notification_email, :boolean, :default => true
ここでの最善のアプローチは、change_column
移行中。タイプを変更するようにアドバタイズされますが、既存の列にデフォルトをアタッチするために使用できます。
持っていた
location :integer
スキーマで、私はデフォルトでゼロにしたかったので、そのように移行を書きました:
change_column :player_states, :location, :integer, :default => 0
これでうまくいきました。
現在のところ、Rails移行でターミナルを通じて定義されたデフォルト値を指定する方法はありません。
以下の手順を実行して、列のデフォルト値を指定できます
1)。実行する
$ Rails generate migration AddNotificationEmailToUsers notification_email:boolean
2)。作成された新しい移行ファイルを編集して、新しい列のデフォルト値をTRUE/FALSEに指定します。
class AddNotificationEmailToUsers < ActiveRecord::Migration
def change
add_column :users, :notification_email, :boolean, default: true
end
end
3)。実行により、上記で生成された移行を実行します。
$ rake db:migrate
Frederick Cheungは正解です。このために移行ファイルを編集する必要があります。マイナーな更新では、デフォルト値を指定する前に、データ型の後にコンマを追加します。
add_column :users, :notification_email, :boolean, :default => true