has many through 関係で 2 つのモデルを結合するテーブルがあります。
ユーザーは権限を通じて多くの役割を持っています
私のAuthoritiesテーブルには3つの列があります user_id role_id farm_id
各機関 (結合テーブル) が Firms と 1 対 1 の関係を持つようにしたいと考えています。これは可能ですか?
---おそらくもう少し情報を編集すると、より明確になります。
私は多くの「会社」を持っています
「ユーザー」は「フォロー」を通じて多くの企業を持つ
「ユーザー」には、「権限」を通じて複数の「役割」もあります
私は cancan gem を使用してユーザーの権利を制限しています。これにより、ユーザーは任意の会社をフォローできますが、編集できるのは 1 つの会社の詳細のみです。これは、ユーザーと会社の間に直接の 1 対 1 の関連付けを作成できないことを意味します。ユーザーと会社には既に多数のスルー アソシエーション - スルー フォローがあるためです。Current_user.firms は、フォローしているすべての企業を返します。
そのため、ユーザーとロールを結合して、権限モデルに編集権限を持っている会社を保存したいと思います。
https://docs.google.com/drawings/d/1CiKsUEdcS6hmKa23xsapWy33NS0Gp1f11a7TgaZbAy0/edit
これでテーブル レイアウトが表示されるはずです。点線は作成したい関連付けです。
現在、私のモデルは次のようになっています。
class Firm < ActiveRecord::Base
has_one :authority
has_many :follows, :dependent => :destroy
has_many :users, :through => :follows
class Follow < ActiveRecord::Base
belongs_to :firm
belongs_to :user
class User < ActiveRecord::Base
has_many :follows, :dependent => :destroy
has_many :firms, :through => :follows
has_many :roles, :through => :authorities
has_many :authorities
class Role < ActiveRecord::Base
has_many :users, :through => :authorities
has_many :authorities
class Authority < ActiveRecord::Base
belongs_to :users
belongs_to :roles
belongs_to :firm
私がこれを行うことができれば、特定の「権限」を選択して「会社」を追加するにはどうすればよいでしょうか。さらに、このネストされた属性をどのように読み取るのでしょうか?
前もって感謝します。