簡體   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