我有用户和组织加入模型UsersOrganisation。用户可能是组织的管理员 - 如果是,则is_admin布尔值为true。轨道has_many通过条件,建立新
如果我手动设置数据库中的is_admin布尔值,Organisations.admins按我的预期工作。
在控制台中,我可以做Organisation.first.users << User.first
,它会创建一个organisations_users条目,如我所料。
但是,如果我做Organisation.first.admins << User.last
它会创建一个普通用户,而不是管理员,即连接表上的is_admin布尔值设置不正确。
除了直接在连接表中创建条目之外,是否有这样做的好方法?
class User < ActiveRecord::Base
has_many :organisations_users
has_many :organisations, :through => :organisations_users
end
class Organisation < ActiveRecord::Base
has_many :organisations_users
has_many :users, :through => :organisations_users
has_many :admins, :through => :organisations_users, :class_name => "User",
:source => :user,
:conditions => {:organisations_users => {:is_admin => true}}
end
class OrganisationsUser < ActiveRecord::Base
belongs_to :organisation
belongs_to :user
end
这确认'的has_many:管理员,:通过=> ... ...'会为选择工作实际,不用于插入数据。所以当你做'Organisation.first.admin << User.last'时,它只是创建普通条目。然而,我想知道如何做到这一点。 thnx为您的问题。 – Samiron