web-dev-qa-db-ja.com

Railsでマイグレーションを作成するときにデフォルト値を列に設定する方法

Railsのモデルは初めてです。モデルの作成方法とそれらに列を追加する方法を知っています。今、私は列にデフォルト値を設定したいのですが、正確にそれを行うことができるのかわかりません。

新しいモデルを生成しました

Rails g model User

次に、それに列を追加しました

Rails generate migration AddNotificationEmailToUsers notification_email:boolean

ここで、Notification列のデフォルト値をtrueに設定します。同じように移行を書く方法を教えてください。ありがとうございました!!!

22
mandar.gokhale

コマンドラインからこれを行うことはできません-移行ファイルを編集し、対応する行を次のように変更する必要があります

add_column :users, :notification_email, :boolean, :default => true
50

ここでの最善のアプローチは、change_column移行中。タイプを変更するようにアドバタイズされますが、既存の列にデフォルトをアタッチするために使用できます。

持っていた

location   :integer

スキーマで、私はデフォルトでゼロにしたかったので、そのように移行を書きました:

change_column :player_states, :location, :integer, :default => 0

これでうまくいきました。

14
rkgordon3

現在のところ、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
2
Subhash Chandra

Frederick Cheungは正解です。このために移行ファイルを編集する必要があります。マイナーな更新では、デフォルト値を指定する前に、データ型の後にコンマを追加します。

add_column :users, :notification_email, :boolean, :default => true
2
Pritesh Jain