Ruby on rails Rails设备获取表名时出错
我有一个Ruby on rails Rails设备获取表名时出错,ruby-on-rails,ruby-on-rails-4,fixtures,Ruby On Rails,Ruby On Rails 4,Fixtures,我有一个角色表,一个权限表,并以多对多关系将它们连接到一个角色_权限表 在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_use
角色
表,一个权限
表,并以多对多关系将它们连接到一个角色_权限
表
在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
给了我一个错误,说没有这样的表:权限\角色:从“权限\角色”中删除
当我注释掉roles.yml
中指定管理员权限的行时,错误就会消失
设备似乎假设联接表的名称为permissions\u roles
,而实际名称为roles\u permissions
如何告诉它正确的表名?按照惯例,两个表之间的联接表名是按字母顺序命名的
因此,角色
和权限
之间的联接表应命名为权限您需要创建表权限
而不是角色
权限
,或者在选项中设置表(:联接
):
#拥有并且属于许多人:
除非将联接表显式指定为选项,否则将使用类名的词法顺序猜测联接表。因此,开发人员和项目之间的联接将给出默认联接表名“developers\u projects”,因为按字母顺序“D”在“P”之前
阅读更多。但我没有使用has\u和\u belien\u to \u many
我使用has\u many
和:through
来建立关系。因此,你的:through
应该是角色权限
模型,但夹具的YAML文件似乎没有找到这一点
has_and_belongs_to_many :roles, join_table: "roles_permissions"