RoR: почему эта проверка завершается неудачей?

#ruby-on-rails

#ruby-on-rails

Вопрос:

Это действительно меня зацепило. У меня есть эта проверка в моей пользовательской модели:

 validates :first_class, :presence => true, :inclusion => %w(Fighter Ranger Magician)
  

Теперь я пытаюсь создать пример в своей консоли:

 ruby-1.9.2-p180 :053 > new = User.create(:first_class => 'Magician')
 => #<User id: nil, ...
ruby-1.9.2-p180 :054 > new.errors
 => {:first_class=>["can't be blank", "is not included in the list"]}
  

Почему я получаю эту ошибку проверки? Я СЕРЬЕЗНО не могу этого понять.

(Если я удалю проверку, пользователь будет создан, но first_class равен нулю : O)

Комментарии:

1. может быть, попробуйте иметь attr_accessable :first_class в вашем файле модели

2. о, боже, да : O Это было передо мной 🙂 Пожалуйста, задайте этот вопрос, и я проголосую за него спасибо! Невероятная вещь в том, что я смотрел на это. Думаю, это один из случаев, когда разум перестает работать: P

Ответ №1:

может быть, попробуйте иметь attr_accessible :first_class в вашем файле модели

Вы должны указать rails, какие атрибуты доступны для записи с помощью массового присвоения. new Метод принимает хэш параметров, который считается массовым присвоением. То же самое верно для update_attributes .

Для проверки вы могли бы просто создать новый экземпляр и сказать object.first_class = 'Magician' . Если это также завершается неудачей, то вы знаете, attr_accessible что проблема не в этом.