0

我的控制器在更新时调用此模型方法:

def update_standard(param_attributes)

...

if param_attributes[:is_legacy] == true
  param_attributes[:foo_type_id] = 2
end

  update_attributes(param_attributes)

end

foo_type_id应该覆盖用户在表单中输入的任何内容,但用户的选择是写入数据库的内容。当为真时,我如何强制foo_type_id为 2 ?is_legacy

4

3 回答 3

2
param_attributes[:is_legacy] == "true" ? param_attributes[:foo_type_id] = 2 : param_attributes[:foo_type_id]
update_attributes(param_attributes)
于 2013-09-05T15:20:41.370 回答
1

您应该检查以确保params[:is_legacy]实际返回true而不是"true"- 非常确定参数始终是字符串。

于 2013-09-05T15:23:05.017 回答
0

我认为您的逻辑评估可能存在一些问题。

尝试将其更改为以下内容,看看它是否有效?

if !param_attributes[:is_legacy].nil? && param_attributes[:is_legacy].to_sym == :true
  param_attributes[:foo_type_id] = 2
end
于 2013-09-05T15:18:31.633 回答