У меня есть многоуровневая вложенная форма, использующая formtastic_cocoon (jquery-версия formtastic).
Я пытаюсь сделать некоторую проверку в смысле
if value is_numeric do insert into database else do database lookup on text insert id as association end
Я надеялся, что у accepts_nested_attributes_for будет опция :if, но, видимо, есть только :reject_if.
Есть ли способ создать проверку, как я описал как часть accepts_nested_attributes_for??
-----------------------Обновлено в соответствии с ответом Зубина ---------------------- -----
Я считаю, что Зубин находится на правильном пути с методом, но я не могу заставить его работать правильно. Я использую метод
def lookup_prereq=(lookup_prereq) return if lookup_prereq.blank? case lookup_prereq when lookup_prereq.is_a?(Numeric) == true self.task_id = lookup_prereq else self.task = Task.find_by_title(lookup_prereq) end end
Когда я запускаю эту функцию, self.task_id помещается в базу данных как «0», а не как Task.id.
Мне интересно, не упускаю ли я что-то еще. Я не совсем уверен, что метод действительно вызывается. Разве я не должен сказать
lookup_prereq(attr[:prereq_id)
в какой-то момент?
-------------------дальнейшее редактирование ----------------------- думаю из чего смогу обнаружил, что метод вызывается только в том случае, если он имеет то же имя, что и значение для базы данных, поэтому я изменил метод на
def completed_task=(completed_task)
К сожалению, это по-прежнему приводит к 0 в качестве значения в базе данных.