1

我有一個簡單的User模型,它使用連接表(has_and_belongs_to_many)與許多Town對象關聯。現在我想通過分配逗號分隔的城鎮id(直接來自作爲HTTP POST參數發送的表單)來更新屬於特定用戶的城鎮。具有update_attributes的質量分配不會更新collection_singular_ids

用戶對象使用下面控制器代碼保存:

@current_object.update_attributes(params[:user]) 

params[:user]包括town_ids這是,例如,設置爲1,4,6

不幸的是,這並沒有更新用戶城鎮關聯。但是,如果我做手工,它精美的作品很好:

User.find(:first).town_ids = "1,4,6" # this saves automatically 

難道僅僅是因爲它不可能大規模分配這些collection_singular_ids領域?

我的用戶模型包含以下內容:

has_and_belongs_to_many :towns 

# necessary for mass-assignment, otherwise it results in an exception: 
attr_accessible :town_ids 

任何幫助是極大的讚賞。

回答

2

你必須通過town_ids陣列

User.find(:first).update_attributes(:town_ids=>[1,4,6]) 

如果傳遞的ID作爲字符串Rails會嘗試將字符串轉換爲整數:

"1,4,6".to_i # => 1 
+0

謝謝,這個伎倆! – Remo