繁体   English   中英

如何在Rails中实施业务规则?

[英]How to implement business rules in Rails?

我有一组需要执行的业务规则,例如:

  1. 如果current_user不是“ admin”,则不允许并给出消息“受限访问”
  2. 如果问题已回答,则不允许其他回答,并提示“问题已回答”

现在,所有这些基本上都是:“如果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)哈希键syntax error, unexpected tASSOC (SyntaxError)

如何将true / false值放入哈希键?

另外,我不禁要以为有人可能已经解决了这个“规则”问题,有什么线索吗?

更新

固定。 有时候露比让我感到沮丧。 调用应如下所示:

evaluate_rules Hash.new({ 
  (1==1) => "good", #rule will pass
  (1==2) => "bad" #rule will fail
})

看起来有点难看但是可以用

有多种方法可以完成此操作,但是最好的方法是使用内置的Rails验证器。 这些设置可以完成您所描述的内容。 在每个模型中,您可以创建验证,然后在验证失败时将消息添加到错误数组。 有许多内置的验证,并且可以构建完全自定义的验证。 这是我要针对上面列出的两个用例采取的方法。

此处的一些示例: http : //omgbloglol.com/post/392895742/improved-validations-in-rails-3

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM