2016-01-20 37 views
1

我知道我可以做這樣的事情只更新PARAMS? 喜歡的東西:存在軌

@object.update_attributes(object_params) 

,它不會把空在我的數據庫,如果他們沒有通過URL傳入。所以我可以撥打 Object.update(date: Date.today, name: "ryan")它只會更新這些項目。

回答

1

Ju ST選擇params這不是nil在你的控制器,並使用@object.update_attributes(object_params)照常

def object_params 
    params.require(:object).permit(:date, :name, :thing, :item).select { |k, v| !v.nil? } 
end 
1

你可以試試這個

@object.update_attributes(params)

此外,它使用強PARAMS一個很好的做法,把這個在你的控制器

 
    private 

    def object_params 
     params.require(:object).permit(:date, :name, :item, :thing) 
    end 
    end 

結束,並用它作爲

@object.update_attributes(object_params)

+0

我確實使用強烈的參數,並嘗試過,但它沒有工作 –

0

試試這個:

keys = [:date, :name, :item, :thing] 
object_params = params.slice(*keys).delete_if { |k,v| v.nil? } 
@object.update_attributes(object_params) 

你也可以做到這一點,如果帕拉姆鍵匹配模型中的列:

object_params = params.slice(*Model.column_names).delete_if { |k,v| v.nil? } 
@object.update_attributes(object_params)