私が理解しているところから、会社に所属している可能性のあるユーザーがいれば、それが実際に管理するかもしれません。
セットアップGroup
は、例えばcompany_id
、user_id
とadmin
フィールド持っている可能性があり(あなたが属しているユーザーを知ることを得るこの方法をするためにどの会社、と彼らはまた、その会社管理する場合)へのユーザーのために
をあなたは
class Company < ActiveRecord::Base
has_many :groups
has_many :users, through: :groups
has_many :administrators, through: :groups, source: :user, conditions: ["groups.admin = ?", true]
end
01を実行して、一つの会社の管理者を得ることができ
ただ一つの会社が2つの列(company_id
とuser_id
)あたりの一意性の検証を追加することができますに属し
とすべてのユーザーのcompany.administrators
またはcompany.users
を呼び出す
はあなたが
class User < ActiveRecord::Base
has_one :group
has_one :company, through: :group
has_one :administered_company, through: :group, source: :company, conditions: ["groups.admin = ?", true]
end
のようなものを呼び出すことができます。また、行うことができuser.company
またはuser.administered_company
のように...
は、すべての企業をい管理者がいますか? – Becuzz
はい、すべての会社に管理ユーザーがいますが、通常のユーザーも複数います。ですから、 "has_one where"型の関係を行う方法はありますか? – Justin
その場合、そのユーザーの会社の管理者を説明するAdminUserIdフィールドを企業テーブルに配置してみませんか? (私は柵を学んでいますので、魔法の柵の文法がどうなるかはわかりません) – Becuzz