显式设置param属性,而不是使用update_attributes调用进行更新

时间:2013-09-05 15:09:48

标签: ruby-on-rails

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

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为真,我如何强制is_legacy为2?

3 个答案:

答案 0 :(得分:2)

param_attributes[:is_legacy] == "true" ? param_attributes[:foo_type_id] = 2 : param_attributes[:foo_type_id]
update_attributes(param_attributes)

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

尝试将此更改为以下内容并查看其是否有效?

if !param_attributes[:is_legacy].nil? && param_attributes[:is_legacy].to_sym == :true
  param_attributes[:foo_type_id] = 2
end