我需要执行一系列业务规则,例如:
现在,所有这些基本上都是:“如果X是假的,那么Y消息”。
所以,我做了这个方法:
def evaluate_rules rules
rules.each_pair do |state,message|
if not (state == true)
return false,message
end
end
true
end
意思是这样叫:
evaluate_rules {
(1==1) => "good", #rule will pass
(1==2) => "bad" #rule will fail
}
但是,我收到了syntax error, unexpected tASSOC (SyntaxError)
和(1==1)
哈希键的错误(1==2)
。
如何将true / false值放入哈希键?
另外,我不禁想到有人可能已经解决了这个“规则”问题,任何线索?
更新
固定。 有时Ruby会让我感到沮丧。 电话应该是这样的:
evaluate_rules Hash.new({
(1==1) => "good", #rule will pass
(1==2) => "bad" #rule will fail
})
看起来有点难看,但有效
答案 0 :(得分:1)
有几种方法可以实现这一点,但最好的方法是使用内置的Rails验证器。这些设置可以完成您所描述的内容。在每个模型中,您可以创建验证,然后在验证失败时将消息添加到错误数组。有许多内置的验证,并能够构建完全自定义的验证。这是我对上面列出的两个用例采取的方法。
此处的一些示例:http://omgbloglol.com/post/392895742/improved-validations-in-rails-3