我需要更新屬性,但只行與像如何用條件update_attributes?
["recipient_id = ? and inbox_id = ? and status='unread'", current_user.id, @inbox.id]
我怎麼做的具體情況?
我需要更新屬性,但只行與像如何用條件update_attributes?
["recipient_id = ? and inbox_id = ? and status='unread'", current_user.id, @inbox.id]
我怎麼做的具體情況?
這取決於您是要執行批量SQL更新,還是要對每個模型執行更新,這些模型還會調用驗證和常規回調鏈。
如果你想實例化對象和運行回調鏈做:
Model.find(:all, :conditions => ["recipient_id = ? and inbox_id = ? and status='unread'", current_user.id, @inbox.id]).each do |obj|
obj.update_attributes(...)
end
如果你想要做的SQL更新:
Model.update_all("attr1='something', attr2=true,...", ["recipient_id = ? and inbox_id = ? and status='unread'", current_user.id, @inbox.id])
確保使用條件的陣列形式,以保證你正確地逃避你的SQL。
Model.update_all("foo='bar'", "recipient_id = #{current_user.id} and inbox_id = #{@inbox.id} and status='unread'")
您還可以使用where
條件進行批量SQL更新,我發現這些條件更具可讀性。
Model.where(recipient_id: current_user.id)
.where(inbox_id: @inbox.id)
.where(status: 'unread')
.update_all("attr1='something_new'")