2015-08-21 2 views

ответ

0

Создайте задачу грабли и присвойте значения по умолчанию нулевым столбцам. Вы можете сделать то же самое в миграции.

Для этого необходимо добавить миграцию, поскольку миграция выполняется только один раз. Но задача рейка может выполняться несколько раз. И не нужно беспокоиться о том, что вы выполняете рейк-задачу или нет.

Ваша миграция должна иметь:

def migrate(direction) 
    super 
    Xyz.where(:price_currency => nil).each do |xyz| 
    xyz.update(:price_currency => "USD") if direction == :up 
end 

def change 
    add_column :xyzs, :price_currency, :sting, default: "USD", null: false 
end 
0

Если вы создаете миграцию, чтобы добавить новый непустой столбец, а просто указать значение по умолчанию, все записи, которые существуют будет принимать значения по умолчанию

class AddNotNullColumn < ActiveRecord::Migration 
    def change 
    add_column :table_name, :column_name, :column_type, null: false, default: 'default_value' 
    end 
end 

Это должно сделать все это для вас в один присест

Смежные вопросы