2013-09-05 39 views
0

我控制器呼籲更新這個模型方法:設置PARAM屬性明確,不更新與update_attributes方法調用

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應該覆蓋任何在表單中輸入的用戶,但用戶的選擇是什麼寫入D B。當is_legacy爲真時,我如何執行foo_type_id爲2?

+1

你應該檢查以確保'p​​arams [:is_legacy]'實際返回'true'而不是''true「' - 確定參數總是字符串。 – Veraticus

+0

工作。如果你願意,輸入你的建議作爲答案,我會接受它。 –

+0

完成,很高興幫助! – Veraticus

回答

1

你應該檢查,以確保params[:is_legacy]實際上返回true而不是"true" - 很肯定PARAMS總是字符串。

0

我認爲您的邏輯評估可能存在一些問題。

請嘗試更改以下內容並查看它是否有效?

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