我正在尝试在模型中进行一些条件验证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'
我一直在谷歌周围寻找解决方案。我已经看到一个建议来编辑控制器以适应这种情况,但是由于种种原因,这似乎并不是最佳选择。我在这里可能会缺少什么?
提前致谢。
您最初的想法似乎很实际。我不能完全确定模型中是否可以使用您的隐藏字段的值。尝试这样,让我知道如何进行:
添加attr_accessor :controller_context
到您的模型。在您的控制器中,在调用保存之前,将您的控制器名称分配给@company.controller_context
。
然后在模型中进行验证时,添加一个条件,例如: validate :final_incorporation, if: :is_incorporation
并在方法中:
def is_incorporation?
controller_context == 'incorporation'
end
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句