2013-10-22 46 views
0

我有一個名爲Animal的ActiveRecord模型。 動物有id和client_id。 在我的應用程序有一個名爲@selectedanimals的數組,其中包含我想要更新的動物的ID,例如:@selectedanimals:[「6」,「14」,「5」]。 我有這樣的動物,像@ newclient.id一個新的client_id的值,我想用新的client_id更新所有這些動物記錄。 我現在擁有的是:Rails ActiveRecord update_all ID數組

Animal.update_all({:client_id => @transferclient.id}, {:id => @selecteanimals}) 

我知道,因爲它是有一個問題,這是不是100%正確的:ID。 我得到這樣一個錯誤: 名爲id的零,這將被錯誤地8 - 如果你真的想零的ID,請使用OBJECT_ID

請原諒我的無知,但這種使用update_all,我是我的第一次唐沒有看到任何例子,你將它傳遞給你想要更新的記錄的ID陣列,所以任何幫助都會很讚賞。

編輯: 顯然@ transferclient.id沒有正確定義。那是我的問題。 謝謝大家。

+0

你是想用單一的client_id或多個CLIENT_ID的更新嗎? – shiva

+0

單個client_id和多個動物 - 但是,我發現代碼的真正問題是@ transferclient.id沒有正確定義。 –

+0

@ Danpe的答案是否有效? – shiva

回答

0

您需要檢查,如果ID是數組內:

Animal.update_all({:client_id => @transferclient.id}, {"id IN (?)" , @selecteanimals}) 
+0

感謝您的回答,但我在我的問題中的代碼在我正確定義@ transferclient.id後有效。那是我的問題。 –

1

我是新來的Ruby,所以我不知道是否有過的API,但Danpe's答案在最近的一些變化,以及初始根據提問者的實際工作提出的建議,並不適合我。他們都提出了語法錯誤。

是爲我工作實際上是API文檔中提出的解決方案是這樣的:

Animal.where(:id => @selectedanimals).update_all(:client_id => @transferclient.id)