我有一个使用 formtastic_cocoon(jquery 版本的 formtastic)的多级嵌套表单。
我正在尝试在某种意义上进行一些验证
如果值 is_numeric 做 插入数据库 否则做 基于文本的数据库查找 插入 id 作为关联 结尾
我希望accept_nested_attributes_for 有一个:if 选项,但显然只有:reject_if。
有没有办法像我描述的那样创建一个验证作为accepts_nested_attributes_for的一部分?
------------------------根据祖宾的回复更新了------------------------ -----
我相信 Zubin 的方法是正确的,但我似乎无法让它正常工作。我使用的方法是
def lookup_prereq=(lookup_prereq) 如果lookup_prereq.blank 则返回? case lookup_prereq 当lookup_prereq.is_a?(Numeric) == true self.task_id = lookup_prereq 别的 self.task = Task.find_by_title(lookup_prereq) 结尾 结尾
当我触发此功能时,self.task_id 将作为“0”而不是 Task.id 放入数据库中。
我想知道我是否还缺少其他东西。我不完全确定该方法实际上正在被调用。难道我不需要说
lookup_prereq(attr[:prereq_id)
在某一点?
-------------------进一步编辑 ----------------------- 我认为我能做到发现只有当它与数据库的值同名时才会调用该方法,因此我将方法更改为
def 完成任务=(完成任务)
不幸的是,这仍然导致 0 作为数据库中的值。