我有User
和Group
连接模型Membership
(见下面的类defs)。试图确定安全的方式来设置Rails的多对多关系
我已经决定在经过多次考虑在成员模型中添加两个属性,该模型描述了用户对组的角色。该应用程序非常简单,不需要添加额外表格的复杂性来分隔组角色。
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属性的加盟模式,我不能指定的会员制模式的owner
和contributor
变量,除非我直接创建一个成员对象,然后将其分配给该组的成员阵列当我创建这样的组时:
#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
.....
我试图不允许对所有者/贡献者属性进行批量分配。
是否有更好的方式来创建用户/组成员资格以及安全地设置成员资格的附加属性?
这种做事你不喜欢的方式是什么?或者,相反,不同的方面会使它成为您寻找的“更好的方式”? – MrTheWalrus 2013-03-13 15:08:35
我并不是说这种方式没有任何问题 - 我不确定什么是正确的方式,这是我目前实施的方式。也许有更好的方法:因此问题的原因。 thx – pghtech 2013-03-13 16:07:45