Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 将业务规则移动到模型中_Ruby On Rails_Ruby_Refactoring_Model_Controller - Fatal编程技术网

Ruby on rails 将业务规则移动到模型中

Ruby on rails 将业务规则移动到模型中,ruby-on-rails,ruby,refactoring,model,controller,Ruby On Rails,Ruby,Refactoring,Model,Controller,我早些时候问了一个问题,得到了一些很好的回答 根据这里给出的一些建议,我尝试移动以下控制器逻辑 if params[:concept][:consulted_legal] == 0 && params[:concept][:consulted_marketing] == 1 @concept.attributes = {:status => 'Awaiting Compliance Approval'} elsif params[:concept][:consulte

我早些时候问了一个问题,得到了一些很好的回答

根据这里给出的一些建议,我尝试移动以下控制器逻辑

 if params[:concept][:consulted_legal] == 0 && params[:concept][:consulted_marketing] == 1
  @concept.attributes = {:status => 'Awaiting Compliance Approval'}
elsif params[:concept][:consulted_marketing] == 0 && params[:concept][:consulted_legal] == 1 
  @concept.attributes = {:status => 'Awaiting Marketing Approval'}
elsif params[:concept][:consulted_marketing] == 0 && params[:concept][:consulted_legal] == 0
  @concept.attributes = {:status => 'Awaiting Marketing & Legal Approval'}
else
  @concept.attributes = {:status => 'Pending Approval'}
end
进入模型,因此:

def set_status
if status.blank?
  if (consulted_legal == true) && (consulted_marketing == true)
      status = "Pending Approval"
  elsif (consulted_legal == true) && (consulted_marketing == false)
    status = "Awaiting Marketing Approval"
  elsif (consulted_legal == false) && (consulted_marketing == true)
    status = "Awaiting Legal Approval"
  elsif (consulted_legal == false) && (consulted_marketing == false)
    status = "Awaiting Marketing & Legal Approval"
  end
end
true # Needs to return true for the update to go through    
  end
我是从一个“保存前”回调中调用的

默认情况下,consulted_legal和consulted_marketing属性都设置为false和notnull,这就是为什么我在这里测试==false或true,而不是询问

if consulted_legal?
比如说

然而,这种逻辑似乎不起作用。如果我检查对象,状态永远不会设置为任何值。有人知道为什么会发生这种情况吗?例如,我知道在模型中如何错误地访问属性了吗

TIA

而不是status=尝试自我。status=。我发现我需要利用自我。在模型中更改模型的属性

有错误也更好。空?因此,如果将来使用errors.add\u to\u base,则set\u status方法将准备中止保存

编辑: 您可能还想退房。它看起来就像是一个插件,完全适合你所做的事情。

而不是status=试试self.status=。我发现我需要利用自我。在模型中更改模型的属性

有错误也更好。空?因此,如果将来使用errors.add\u to\u base,则set\u status方法将准备中止保存

编辑:
您可能还想退房。它看起来就像是一个插件,完全适合您所做的事情。

您是否从用户输入中设置参数


如果它们没有定义为布尔数据库列,那么您将为它们分配一个字符串,该字符串永远不会等于true。

您是否根据用户输入设置参数


如果它们没有定义为布尔数据库列,那么您将为它们分配一个字符串,该字符串永远不会等于true。

我怀疑他有这些列,这些列来自控制器。我怀疑他有这些列,也就是他们来自控制器。