2013-08-29 2 views
0

Я пытаюсь пропустить проверки ассоциации belongs_to, если критерии истинны. Ниже мой кодПропустить validates_presence_of из ассоциации own_to

class Venue < ActiveRecord::Base 
    has_many :events 
    validates_presence_of :name, :postcode, :category 
end 

class Event < ActiveRecord::Base 
    belongs_to :venue 
    accepts_nested_attributes_for :venue 
end 

Так что мне нужно сделать, это пропустить validates_presence_of проверки Venues если критерии от модели событий верно. Так что скажем, если event_type был равен «1», тогда он будет игнорировать вызов Venues validates_presence_of, но если event_type был «2», он все равно выполнит вызов validates_presence_of.

+1

Если в Venue может иметь много событий, что происходит, если 1 event_type имеет тип 1, а другой - типа 2? –

ответ

0

В конце концов, я сделал что-то очень похожее на this

0

На эту тему есть Railscast. Вы также можете проверить Rails Conditional Validation

на основе приведенной выше ссылке, вы должны пройти лямбда, такие как:

:if => lambda { |venue| venue.event.try(:event_type) == 2 } 
+0

Это предполагает, что в одном месте есть только одно событие. Что, если у него есть двое, как кто-то указал выше? –

+0

может подтвердить проверку нескольких записей одновременно? Я думал, что они проверены> сохранены по одному. это может быть плохим предположением с моей стороны ... – dax

+0

Да, вы можете только проверять один за раз, но я думаю, что логика OP ошибочна. На самом деле не имеет смысла проверять родительскую модель, основанную на детях, в которой много отношений. Вероятно, есть лучший способ сделать то, что он пытается сделать. –

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