2016-06-11 4 views
0

Я пытаюсь проверить ассоциацию в своей модели и исключить определенный объект для проверки, но, похоже, не может заставить его работать. Вот мой код:Rails 4 Проверка исключения ActiveRecord для ассоциации

validates :user, presence: true, exclusion: { in: [:lot_high_bidder] } 

Я полагаю, что это пытается сделать прямое сравнение :user с символом :lot_high_bidder, который, очевидно, всегда терпит неудачу, но это значит, что я не могу использовать имя методы в запретном валидаторе или синтаксис просто неправильный?

+0

Можете ли вы объяснить, чего вы пытаетесь достичь? Вы говорите, что хотите исключить объект для проверки - возможно, вам нужна условная проверка , если: или если: параметры для валидатора - http://edgeguides.rubyonrails.org/active_record_validations.html#using-a-symbol-with-if-and- если только –

+0

Поскольку само исключение является валидацией, запрещающей свойство быть одним из перечисленных значений (то есть запретить пользователю быть равным: lot_high_bidder) –

+0

Извините, что знаю пользователя через ассоциацию ставок, и я пытаюсь предотвратить нынешний высокий участник торгов от размещения другой заявки – toomanyredirects

ответ

0

Rails имеет validates_associated метод, который используется для проверки связи на моделях

http://apidock.com/rails/ActiveRecord/Validations/ClassMethods/validates_associated

Не уверен, что если вы можете просто проверить user_id вместо пользователя ассоциации.

Надеюсь, это поможет

+0

Я действительно думал об этом, но мне казалось, что это было больше для выполнения собственных проверок объекта в то же время, а не для подтверждения приемлемости ассоциации. – toomanyredirects

Смежные вопросы