我有用戶和組織加入模型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