Как использовать ассоциации в валидации моделей? - PullRequest
0 голосов
/ 18 июня 2011

Имея модель1 с , принадлежит: модель2 связь. model2 имеет атрибут с именем duration с целым числом. model1 имеет атрибут с именем start_day .В этой модели я хочу проверить, что start_day меньше или равно продолжительность для модели 2.

Я добавил следующую строку в модель1:

validates_numericality_of :start_day, :less_than_or_equal_to => :model2.duration

Rails запускает NoMethodError (неопределенный метод `duration 'для: model2: Symbol)

model2 имеет атрибут продолжительности ...

Любая идея, чтоЯ скучаю?Заранее спасибо ...

1 Ответ

6 голосов
/ 18 июня 2011

Опция less_than_or_equal_to требует числового значения, символа, обозначающего метод экземпляра, или процесса, выполняемого во время проверки. Вы, вероятно, хотите третий вариант:

validates_numericality_of :start_day,
    :less_than_or_equal_to => Proc.new { |model1| model1.model2.duration }

Или, если у вас есть метод в model1 с именем model2_duration, вы можете сократить его до этого:

validates_numericality_of :start_day, :less_than_or_equal_to => :model2_duration
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...