我需要設計一個系統來跟蹤用戶成員身份,以不同角色(當前爲三個)的組。has_many:通過默認值
class Group < ActiveRecord::Base
has_many :memberships
has_many :users, :through => :memberships
end
class Role < ActiveRecord::Base
has_many :memberships
has_many :users, :through => :memberships
end
class Membership < ActiveRecord::Base
belongs_to :user
belongs_to :role
belongs_to :group
end
class User < ActiveRecord::Base
has_many :memberships
has_many :groups, :through => :memberships
end
理想情況下我要的是簡單地設置
@group.users << @user
,並有成員有正確的角色。我可以使用:條件來選擇已手動插入的數據,例如:
:conditions => ["memberships.role_id= ? ", Grouprole.find_by_name('user')]
但是,在創建組的成員資格時,role_id未設置。
有沒有辦法做到這一點,因爲目前我的組模型中的每個用戶角色都有一些重複的代碼片段。
修訂
應該注意的是什麼ID非常喜歡實現類似於
@group.admins << @user
@group.moderators << @user
這東西會讓人產生成員到組並設置適當的成員角色(ROLE_ID)。
什麼是Grouprole? – 2010-04-26 14:34:04
對不起我重構了我的代碼稍微張貼,我已更新張貼的片段。 – 2010-04-26 14:49:42
用戶不應該擁有'has_many:roles,:through =>:memberships'? – SztupY 2010-04-26 14:55:18