Rails 4 has_many through for many to many association fails when creating association

Rails 4 has_many through for many to many association fails when creating association

这是我的架构:

create_table :policies do |t|
  t.string :name

  t.timestamps
end

create_table :permissions do |t|
  t.string :name
  t.string :method
  t.string :controller

  t.timestamps
end

create_join_table :policies, :permissions do |t|
  t.index :policy_id
  t.index :permission_id
end

这是我用来创建记录及其关联的代码:

policy = Policy.create! name: "View All"
permission = Permission.create!({
  name: "View Events",
  method: "index",
  controller: "Events"
})

policy.permissions << permission

并返回以下错误:

ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR:  relation "permission_policies" does not exist

通过迁移创建的 table 名称是 policies_permissions

我想知道这是否是 class 名称未正确推断的问题

交换迁移中权限和策略的位置,以便创建 permissions_policies 而不是 policies_permissions。 Rails 按字母顺序推断连接 table 的 class 名称。

有关加入 table 命名约定的详细信息,请参阅 this answer