Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails设备获取表名时出错_Ruby On Rails_Ruby On Rails 4_Fixtures - Fatal编程技术网

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"