2

我有五张桌子,我正试图让它们很好地协同工作,但可能需要一些帮助。

我有三个主要的表:

  • 帐户
  • 会员
  • 和角色。

有两个连接表

  • account_members
  • 和 account_member_roles。

accountsmembers表由account_members(fk account_id 和 member_id)表连接。

其他 2 个表是问题(角色account_member_roles)。

一个帐户的成员可以拥有多个角色,并且我将account_member_roles(fk account_member_id 和 role_id)表加入了account_members连接表和角色表。

这似乎合乎逻辑,但你能与连接表建立关系吗?我想做的是在创建帐户时,例如,我希望@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.)

在尝试保存记录时。

关于我应该如何处理这个问题的任何建议?

中央情报局

-蚂蚁

4

2 回答 2

1

如果我没看错,你有:

账户 habtm 成员

会员 habtm 帐户

成员有很多角色

如果这是准确的,您只需要帐户和成员之间的连接表,然后只需要成员和角色之间的常规 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 回答