我有五张桌子,我试图在一起很好地工作,但可能需要一些帮助。
我有三个主要表格:
有两个连接表
帐户和成员表由 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.)
试图保存记录。
关于我应该如何处理的任何建议?
CIA
-ants
答案 0 :(得分:1)
如果我正确读到这个,你有:
帐户habtm成员
成员habtm帐户
成员has_many角色
如果这是准确的,您只需要帐户和成员之间的连接表,然后只需要成员和角色之间的常规FK。 @ account.members和@ account.members.roles都可以让你访问你需要的属性,@ account.save可以毫不费力地保存整个混乱。
我不确定是什么迫使您拥有该account_members_roles表。如果Rails能够解决这个问题,我不会这样做。我知道我肯定不能。 :)
答案 1 :(得分:0)
在这里阅读: http://blog.hasmanythrough.com/2006/4/17/join-models-not-proxy-collections
一个简单的主要区别 has_and_belongs_to_many连接表和 一个has_many:通过连接模型就是那个 连接模型可以具有属性 除了外键之外 记录它正在加入。事实上,如果你 你没有那些其他属性 可能不会使用连接模型和 会选择加入表。
所以你似乎想要使用has_many:through,你就会被设置。