Я понимаю, что есть несколько SO вопросов по этому вопросу, и этот описывает его довольно близко, но не был принят или продолжен.
Я добавил новое поле 'is_ignored 'для модели, использующей миграцию;поле уже находится в базе данных mysql.Поле перечислено в schema.rb и помечено как attr_accessible в определении модели, но все равно выдает неопределенную ошибку метода, когда я пытаюсь присвоить значение.
Вот с чем я работаю.
Миграция (работает и заполняет поля, как и ожидалось):
def self.up
add_column :user, :is_ignored, :boolean
User.reset_column_information
User.find(:all).each do |p|
p.update_attribute :is_ignored, false
end
Схема (примечание "перейти к объявлению" в RM занимаетя здесь, как это было бы рабочие поля):
create_table "users", :force => true do |t|
...
t.datetime "updated_at"
t.boolean "is_ignored"
end
Контроллер:
params[:selected_users].each do |id|
@user = User.find(id)
@user.is_ignored = false #here is where the error is being thrown
@user.save
end
Я потратил много времени на контроллер до сих пор и не хотел бы сдуть его и повторноЛеса, если мне не обязательно.Есть ли какой-то другой шаг в ручном добавлении нового поля в модель, которую я мог пропустить?
Редактировать:
Я также подтвердил, что могу получить доступ к этому полюи установите значение из консоли rails, и что @user не равен nil в моем контроллере при выполнении вызова;все же он все еще выдает эту ошибку undefined_method.
Second Edit:
Так что это довольно круто;друг предложил заменить этот вызов метода следующим образом:
@user.update_attribute( :is_ignored, false )
Что мы ожидали, но сработало!Он выдал ту же неопределенную ошибку метода, что и раньше ...