Мне нужно проверить модель только для определенного действия (: создать).Я знаю, что это плохая тактика, но мне просто нужно сделать это в моем случае.
Я пытался использовать что-то вроде:
validate :check_gold, :if => :create
или
validate :check_gold, :on => :create
Но я получаю ошибки.Проблема в том, что я не могу выполнить свою пользовательскую проверку check_gold при редактировании, а только при создании (поскольку проверка золота должна выполняться, только когда альянс создан, а не отредактирован).
Спасибо за чтение:)
Я добавляю некоторый фактический код:
attr_accessor :required_gold, :has_alliance
validate :check_gold
validate :check_has_alliance
Это модель Альянса.: required_gold и: has_alliance оба установлены в контроллере (они являются виртуальными атрибутами, потому что мне нужна информация от контроллера).Теперь фактические валидаторы:
def check_gold
self.errors.add(:you_need, "100 gold to create your alliance!") if required_gold < GOLD_NEEDED_TO_CREATE_ALLIANCE
end
def check_has_alliance
self.errors.add(:you_already, "have an alliance and you cannot create another one !") if has_alliance == true
end
Это прекрасно работает для создания, но я хочу ограничить его только созданием, а не редактированием или другими действиями скаффолда.