0
我有兩個模型Users
和Roles
。我已經建立了兩種模型之間的多對多關係,並且我有一個名爲roles_users
的聯合表。Ruby on Rails更新連接表記錄
我在頁面上有一個表格,其中包含用戶檢查複選框的角色列表,並將其發佈到控制器,然後更新roles_users
表。
在我更新方法的那一刻,我這樣做是因爲我不知道更好的辦法:
role_ids = params[:role_ids]
user.roles.clear
role_ids.each do |role|
user.roles << Role.find(role)
end unless role_ids.nil?
所以我清除所有條目出來,然後循環扔從發送的所有角色ID通過郵政形式,我也注意到,如果所有的複選框被選中並且發佈的表單不斷添加重複記錄,那麼是否有人可以通過更有效的方式提供一些建議?
乾杯,完美的作品,我實際上使用has_and_belongs許多,但閱讀:通過方法,並將其移動到那。再次感謝。 – RailsSon 2010-05-19 10:58:06
應該是user.roles = params [:roles_ids] .present? ? Role.find_all_by_id(params [:roles_ids]):[] – user938363 2012-01-25 03:34:08
是的,你是對的。編輯! – tadman 2012-01-25 15:21:55