这是我的架构:
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
我想知道这是不是正确推断出类名的问题
答案 0 :(得分:1)
在迁移中交换权限和策略的位置,以便创建permissions_policies而不是policies_permissions。 Rails按字母顺序推断连接表的类名。
有关联接表命名约定的更多信息,请参阅this answer。