如何在Rails 3中将值设置为新列?

Dan*_*ard 4 migration activerecord ruby-on-rails-3

这可能是另一个问题,但我找不到.

我是Rails的亲戚.我正在尝试将新列添加到已包含数据的表中.此列不允许空值.更新所有现有记录以在此新列中具有值的最简单方法是什么?我知道它可能在我的迁移的最后一块,但我不知道语法是什么.

def self.up
  change_table :reminders do |t|
    t.boolean :active
  end
  #model name is Reminder - how to update data with a value?
end
Run Code Online (Sandbox Code Playgroud)

Ste*_*ght 7

您可以做的是添加列,使用所需的值更新表中的所有记录,然后将其更改为不允许空值.

def self.up
  add_column :reminders, :active, :boolean, :default => true
  Reminder.update_all( "active = ?", true )
  change_column :reminders, :active, :boolean, :default => true, :null => :false
end
Run Code Online (Sandbox Code Playgroud)