Rails夹具得到表名错误
我有一个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
中roles.yml
指定管理员权限的roles.yml
,错误就会消失。
看起来夹具假设连接表在实际命名为roles_permissions
时被命名为roles_permissions
我如何告诉它正确的表名?
按照惯例,两个表之间的连接表名称按字母顺序命名。
因此, roles
和permissions
之间的连接表应命名为permissions_roles
。
您需要创建表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”之前
在这里阅读更多。