我试图在我的模型Company
中进行一些条件验证。基本上这个想法是许多不同的控制器使用Company
,每个控制器都有自己的验证要求。我的想法是使用attr_accessor
添加一个标识所讨论的控制器的属性,如下所示:
<%= company.hidden_field :controller_context, value: "incorporation" %>
但是,我在验证时无法使用:controller_context
作为条件。
validate :final_incorporation, if: "controller_context=='incorporation'"
上面给出了没有错误,但也没有触发验证。但是,如果我尝试使用以下内容在我的日志中获取controller_context
的值:
logger.debug "controller_context: #{controller_context}"
我收到错误
undefined local variable or method `controller_context'
我一直在谷歌寻找解决方案。我已经看到了一个建议来编辑我的控制器以适应这一点,但由于各种原因,这似乎并不合适。我可能会在这里失踪什么?
提前致谢。
答案 0 :(得分:3)
您最初的想法似乎很实用。我不完全确定隐藏字段的值是否在模型中可用。试试吧,让我知道它是怎么回事:
将attr_accessor :controller_context
添加到您的模型中。在您的控制器中,在致电保存之前,将控制器的名称分配给@company.controller_context
。
然后在模型中验证时添加一个条件,例如:
validate :final_incorporation, if: :is_incorporation
在方法中:
def is_incorporation?
controller_context == 'incorporation'
end