nea*_*lob 1 validation ruby-on-rails attr-accessor ruby-on-rails-4
我正在尝试在我的模型中进行一些条件验证Company。基本上这个想法是Company由许多不同的控制器使用,每个控制器都有自己的验证要求。我的想法是添加attr_accessor一个属性来标识有问题的控制器,如下所示:
<%= company.hidden_field :controller_context, value: "incorporation" %>
Run Code Online (Sandbox Code Playgroud)
但是,我无法:controller_context在验证中用作条件。
validate :final_incorporation, if: "controller_context=='incorporation'"
Run Code Online (Sandbox Code Playgroud)
上面没有给我错误,但也没有触发验证。controller_context但是,如果我尝试使用以下命令获取日志中的值:
logger.debug "controller_context: #{controller_context}"
Run Code Online (Sandbox Code Playgroud)
我收到错误
undefined local variable or method `controller_context'
Run Code Online (Sandbox Code Playgroud)
我一直在谷歌上寻找解决方案。我看到了一项建议,要求编辑我的控制器以适应这一点,但由于多种原因,这似乎并不是最佳选择。我在这里可能会缺少什么?
提前致谢。
您最初的想法似乎很实用。我不完全确定隐藏字段的值在模型中是否可用。像这样尝试一下,让我知道效果如何:
添加attr_accessor :controller_context到您的模型。在您的控制器中,在调用 save 之前,将控制器的名称分配给@company.controller_context。
然后在模型中验证时添加一个条件,例如:
validate :final_incorporation, if: :is_incorporation
并在方法中:
def is_incorporation?
controller_context == 'incorporation'
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2989 次 |
| 最近记录: |