2016-11-17 44 views
0

動態屬性我有一些變數,我從Get/Post請求=>如何創建在軌的活動記錄更新方法

params[:status], params[:value] #:value has the value of the :status

,我很想使用活動記錄的update方法得到更新記錄(驗證需要運行)。然後我如何創建一個動態查詢,如

@user.update(status: value) 

我試過這個。

attribute = { params[:status] => params[:value] } 
user.update(attribute) 

但這不會調用任何驗證。驗證對我來說很重要。

回答

1

更新將調用驗證,但您需要更改構建屬性的方式,因爲params[:status]:不是有效的構造。使用....

attribute = { params[:status] => params[:value] } 
+0

抱歉,只是有2種方法問題中的一個典型例子。它的奇怪,現在我可以看到它沒有通過驗證。基本相同的代碼。也許我之前使用了一個錯誤的值 – anyavacy

+0

可能,但無論如何高興你的問題是排序! – SteveTurczyn

0

如果超過一個值用逗號隔開的

attributes = {"firstname"=>"John", "surname"=>"Stack"}

在你的情況

attributes = {params[:status] => params[:value], params[:name] => params[:value]}

或者轉換爲字符串,如果需要的話

attributes = {params[:status].to_s => params[:value].to_s, params[:status].to_s => params[:value].to_s} //default is string

0

這樣做有

attribute = { status: value } 
user.update(attribute) // this should run validation for sure. 

user.assign_attributes(attribute) 
user.save(validate: true)