#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
что проблема не в этом.