2

5 つのテーブルをうまく連携させようとしていますが、助けが必要な場合があります。

私は3つのメインテーブルを持っています:

  • アカウント
  • メンバー
  • そして役割。

結合テーブルが 2 つある場合

  • account_members
  • および account_member_roles。

accountsテーブルとmembersテーブルは、account_members ( fk account_id および member_id) テーブルによって結合されます。

他の 2 つのテーブルが問題です ( rolesaccount_member_roles )。

アカウントのメンバーは複数のロールを持つことができ、 account_members結合テーブルとロールテーブルを結合するaccount_member_roles (fk account_member_id および role_id) テーブルがあります。

それは論理的に思えますが、結合テーブルと関係を持つことができますか? 私ができるようにしたいのは、アカウントを作成するときです。たとえば、@ account.save にロールを含めて、 account_member_rolesテーブルをきれいに更新したいのですが、 account_members結合テーブルを使用します。

私はもう試した .....

accept_nested_attributes_for :members, :account_member_roles

account.rbにあるが、私は.....

ActiveRecord::HasManyThroughCantAssociateThroughHasManyReflection (Cannot modify association 'Account#account_member_roles' because the source reflection class 'AccountMemberRole' is associated to 'AccountMember' via :has_many.)

レコードを保存しようとしたとき。

これにどのようにアプローチすべきかについて何かアドバイスはありますか?

CIA

-アリ

4

2 に答える 2

1

私がこれを正しく読んでいるなら、あなたは持っています:

アカウント habtm メンバー

メンバーのhabtmアカウント

メンバー has_many ロール

それが正確であれば、アカウントとメンバー間の結合テーブルと、メンバーとロール間の通常の FK だけが必要です。@account.members と @account.members.roles はどちらも必要な属性へのアクセスを提供し、@account.save は大騒ぎせずに混乱全体を保存するはずです。

その account_members_roles テーブルが必要な理由がわかりません。Railsがそれを処理できるかどうかはわかりません。私は確かにできないことを知っています。:)

于 2010-03-19T23:17:13.650 に答える
0

ここを読んでください: http://blog.hasmanythrough.com/2006/4/17/join-models-not-proxy-collections

単純な has_and_belongs_to_many 結合テーブルと has_many :through 結合モデルの主な違いは、結合モデルが結合するレコードの外部キー以外の属性を持つことができることです。実際、これらの他の属性がなければ、おそらく結合モデルを使用せず、結合テーブルで解決するでしょう。

したがって、 has_many :through を使用したいようで、設定されます。

于 2010-03-04T19:36:22.487 に答える