我是模拟导轨的新手。我知道如何创建模型&如何向他们添加列。现在我想将默认值设置为一列,但我不知道我究竟能做到这一点。
我生成了新模型
rails g model User
然后添加了列
rails generate migration AddNotificationEmailToUsers notification_email:boolean
现在我想将Notification列的值默认设置为true。 请指导我如何编写相同的迁移。谢谢!!!
答案 0 :(得分:47)
您无法从命令行执行此操作 - 您必须编辑迁移文件并将相应的行更改为
add_column :users, :notification_email, :boolean, :default => true
答案 1 :(得分:14)
此处的最佳方法是在迁移中使用change_column
。它被宣传为更改类型,但您可以使用它将默认值附加到现有列。
我有
location :integer
在模式中我希望默认为零,所以我写了一个迁移:
change_column :player_states, :location, :integer, :default => 0
这就是诀窍。
答案 2 :(得分:2)
Frederick Cheung是正确的,您需要为此编辑迁移文件。 只需一个小更新,在指定默认值之前在数据类型后添加逗号。
add_column :users, :notification_email, :boolean, :default => true
答案 3 :(得分:2)
截至目前,无法在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