この質問は、Rails 3.0.0です。なぜhas_manyではないのですか?ここで働くことは...隠された制限はありますか?
capabilities
id
name
capability_roles
role_id
capability_id
user_roles
user_id
role_id
users
id
name
roles
id
name
基本的な機能はroles_capabilitiesに接続 は、ユーザーに接続user_rolesに接続します。
は私が5つのテーブル(不自然しかし、合理的な例として、わずか4分を)持っています。
* _rolesテーブルは単なるマップです。彼らは主キーを持っていません。役割 テーブル自体はこの質問にほとんど付随しています。
これにより、ユーザーが引き受けることが許可されている役割とは独立して、各役割の機能を編集することができます。
には、簡単にの機能があります。
users
has_many :user_roles # .joins(:user_roles).to_sql # works
user_roles
belongs_to :user # .joins(:user).to_sql # works
# .joins(:capability_roles).to_sql # works (no corresponding belongs_to!)
has_many :capability_roles, :primary_key => role_id, :foreign_key => :role_id
# .joins(:capabilities).to_sql # fails
has_many :capabilities, :through => :capability_roles
capability_roles
belongs_to :capabilities # .joins(:capabilities).to_sql # works
# .joins(:user_roles).to_sql # works (no corresponding belongs_to!)
has_many :user_roles, :primary_key => role_id, :foreign_key => :role_id
# .joins(:users).to_sql # fails
has_many :users, :through => :user_roles
capabilities
has_many :capability_roles # .joins(:capability_roles).to_sql # works
私の質問は::
なぜHAS_MANYていません:仕事を通じてここに?今の関連付けを設定する
has_many:throughが設計されたようです。 missing/relevantのないbelongs_to()が問題であるかどうかはわかりません。
私が見るに障害がある: NoMethodError:nilのための未定義のメソッド `EQ」:NilClass
どこにでもリンクテーブルの名前を指定していますか?私はRailsが複数形でない限り名前を推論しないと確信しています –
実行しようとしているコントローラにコードを投稿できますか?そうすれば、あなたがやりたいこととあなたのモデルがどのように設定されているかの切り分けを判断することができます。 –
このコメントは削除されました。それは間違った場所に上陸した。 – eclectic923