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。
这是我的架构:
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。