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: ""を追記する必要はない。