我有一组需要强制执行的业务规则,例如:
- 如果 current_user 不是“admin”,则不允许并给出消息“restricted access”
- 如果问题已被回答,则不允许另一个答案并给出消息“问题已被回答”
现在,所有这些基本上都是:“如果 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)
散列键的错误。
如何将真/假值放入哈希键中?
另外,我不禁想到以前有人可能已经解决了这个“规则”问题,有什么线索吗?
更新
固定的。有时 Ruby 让我感到沮丧。调用应该是这样的:
evaluate_rules Hash.new({
(1==1) => "good", #rule will pass
(1==2) => "bad" #rule will fail
})
看起来有点难看但有效