2016-05-17 135 views
2

在軌批量更新我有兩個型號:如何做的habtm協會

#user.rb 

has_and_belongs_to_many :groups 

#group.rb 

has_and_belongs_to_many :users 

我想組用戶,使得many users can be associated to many groups關聯。

應用程序的前端側正在將user_idsgroup_ids發送到更新方法。

因此,在UsersController,我找到了每個用戶,並將該用戶與組關聯。

def update 
    users = User.where(id: [325, 326]) 
    users.each { |user| user.update(group_ids: [1, 2])} 
end 

我需要知道更新關聯記錄的標準方式以及更新關聯記錄的最有效方式是什麼?

回答

1

有一種方法group_ids關聯柱update_all

def update 
    users = User.where(id: [325, 326]) 
    users.update_all group_ids: [1, 2] 
end 
+1

update_all不起作用。雖然我試過你的解決方案,但我得到這個錯誤。 「ActiveRecord :: StatementInvalid:PG :: SyntaxError:ERROR:語法錯誤處於或接近」2「 LINE 1:UPDATE」users「SET」group_ids「= 1,2 WHERE」... ^ :UPDATE 「users」SET「group_ids」= 1,2 WHERE「users」。「deleted_at」IS NULL AND「users」。「id」IN(325,326)' – PrajaktaC

+0

您的模型有哪些列? –

+0

需要更新在連接表中:'groups_users'。'User'表中的列是'name','description'和'Group'表具有'name','description'。 – PrajaktaC