change_column
- это метод ActiveRecord::Migration
, поэтому его нельзя вызывать так в консоли.
Если вы хотите добавить значение по умолчанию для этого столбца, создайте новую миграцию:
rails g migration add_default_value_to_show_attribute
Затем в миграции создано:
# That's the more generic way to change a column
def up
change_column :profiles, :show_attribute, :boolean, default: true
end
def down
change_column :profiles, :show_attribute, :boolean, default: nil
end
ИЛИ более конкретный вариант:
def up
change_column_default :profiles, :show_attribute, true
end
def down
change_column_default :profiles, :show_attribute, nil
end
Затем запустите rake db:migrate
.
Это ничего не изменит на уже созданные записи. Для этого вам нужно будет создать rake task
или просто зайти в rails console
и обновить все записи.
Когда вы добавляете t.boolean :show_attribute, :default => true
к миграции create_profiles
, это нормально, если она ничего не делает. Выполняются только те миграции, которые еще не были выполнены. Если вы начали с новой базы данных, то по умолчанию будет установлено значение true.