我有一个带有连接模型User
的模型(参见下面的类定义)。Group
Membership
经过深思熟虑,我决定在 Membership 模型上添加两个属性,用于描述组中的用户角色。该应用程序非常简单,并且不希望添加额外的表来分离组角色的复杂性。
class User < ActiveRecord::Base
....
has_many :memberships
has_many :groups, through: memberships
end
class Group < ActiveRecord::Base
....
has_many :memberships
has_many :users, through: memberships
end
class Membership < ActiveRecord::Base
....
belongs_to :user
belongs_to :group
attr_protected :owner, :contributor
end
但是,由于我已将 attr_protected 属性添加到连接模型,因此我无法在 Membership 模型上分配owner
andcontributor
变量,除非我直接创建 Membership 对象,然后在创建组时将其分配给组的成员资格数组,如下所示:
#Partial group create method on group controller
@group = Group.new(name: params[:group])
@membership = Membership.new(group: @group, user: @user)
@membership.owner = true
@membership.contributor = true
@group.memberships << @membership
if @group.save
.....
我试图不允许对所有者/贡献者属性进行大规模分配。
是否有更好的方法来创建用户/组成员资格以及安全地设置成员资格的附加属性?