好的,我有三个表user,groups,groups_users 我进行了迁移,将groups_users重命名为成员身份
rename_table :groups_users, :memberships
一切正常,但是这种关联
has_and_belongs_to_many :groups, through: memberships, class: "Group"
引发以下错误:
PG::UndefinedTable: ERROR: relation "groups_users" does not exist
我在整个项目中进行了搜索,以查找关于旧名称的被遗忘的参考,但是什么也没有。有什么想法吗?
答案 0 :(得分:2)
has_and_belongs_to_many
的关联没有through
选项,您应该使用join_table
选项。
has_and_belongs_to_many :groups, join_table: 'memberships'
答案 1 :(得分:1)
最简单的经验法则是,如果需要将关系模型作为独立实体使用,则应设置has_many:through关系。如果您不需要对关系模型做任何事情,则设置has_and_belongs_to_many关系可能会更简单(尽管您需要记住要在数据库中创建联接表)。
如果需要在连接模型上进行验证,回调或其他属性,则应使用has_many:through。
我猜想您的Memership模型不仅具有联接模型的功能,因此您应该使用has_many :through
关联。