Rails夹具得到表名错误

时间:2015-07-13 17:07:53

标签: ruby-on-rails ruby-on-rails-4 fixtures

我有一个roles表,一个permissions表,并以roles_permissions表的多对多关系加入它们。

roles.yml文件中,我有这个:

admin:
  name: admin
  permissions: create_user, edit_user, view_all_users

permissions.yml我有:

create_user:
  name: create_user
  description: Create a new user

edit_user:
  name: edit_user
  description: Edit any user details

view_all_users:
  name: view_all_users
  description: View all users

现在rake test错误地说no such table: permissions_roles: DELETE FROM "permissions_roles"

当我在roles.yml中注释掉指定管理员权限的行时,错误就会消失。

看起来夹具假设连接表名为permissions_roles,当它实际命名为roles_permissions

如何告诉它正确的表名?

2 个答案:

答案 0 :(得分:2)

按照惯例,两个表之间的连接表名称按字母顺序命名。

因此,rolespermissions之间的联接表应命名为permissions_roles

答案 1 :(得分:0)

您需要创建表格permissions_roles 而不是roles_permissions,或者在选项(:join_table)中设置表格:

has_and_belongs_to_many :roles, join_table: "roles_permissions"

<强> #has_and_belongs_to_many

  

除非明确指定连接表作为选项,否则使用类名的词法顺序进行猜测。因此,Developer和Project之间的连接将提供默认的连接表名称“developers_projects”,因为“D”按字母顺序排在“P”之前

了解更多here