rails migration defaultについて
railsでmigrationファイルのdefaultについて調べてもあまり明確なものがなかったため記録しておきます。
def change
create_table :users do |t|
## Database authenticatable
t.string :email, null: false, default: ""
t.string :encrypted_password, null: false, default: ""
## Recoverable
t.string :reset_password_token
t.datetime :reset_password_sent_at
## Rememberable
t.datetime :remember_created_at
t.timestamps null: false
end
add_index :users, :email, unique: true
add_index :users, :reset_password_token, unique: true
end
マイグレーションファイルでこのような記述がある。
t.string :email, null: false, default: ""
t.string :encrypted_password, null: false, default: ""
このdefault:""は初期値が空欄だということを示しています。
emailとencrypted_passwordはdeviseで自動生成されており、その時defaultも自動生成されますが、消しても問題ないようです。(空欄なので消す意味もありませんが)
t.string :nickname, null: false
t.string :birth_date, null: false
t.string :last_name, null: false
上のものを追記したい時、初期値を空欄にしたい場合、default: ""はつけるとエラーが出ることがあります。そのため書かない方が無難です。
まとめ
defaultは初期値を表しています。
emailとencrypted_passwordはdeviseで自動生成され、同時にdefaultも作られています。
空欄のためにdefault: ""を追記する必要はない。