在创建关联时,Rails 4 has_many to for many to many association失败

时间:2017-11-16 15:44:44

标签: ruby-on-rails-4 has-many-through

这是我的架构:

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

通过迁移创建的表名是policies_permissions

我想知道这是不是正确推断出类名的问题

1 个答案:

答案 0 :(得分:1)

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

有关联接表命名约定的更多信息,请参阅this answer