Ruby on rails Rails中HABTM和联接表的问题

Ruby on rails Rails中HABTM和联接表的问题,ruby-on-rails,fixtures,has-and-belongs-to-many,Ruby On Rails,Fixtures,Has And Belongs To Many,我有一个简单的模型: class User < ActiveRecord::Base has_and_belongs_to_many :roles end class Role < ActiveRecord::Base has_and_belongs_to_many :users end 这些条目在这里按与“schema.rb”中相同的顺序显示 我按照以下方式安排固定装置: # roles.yml user: name: user admin: name:

我有一个简单的模型:

class User < ActiveRecord::Base
   has_and_belongs_to_many :roles
end

class Role < ActiveRecord::Base
   has_and_belongs_to_many :users
end
这些条目在这里按与“schema.rb”中相同的顺序显示

我按照以下方式安排固定装置:

# roles.yml 
user:
  name: user

admin:
  name: admin

moderator:
  name: moderator

# users.yml
User1:
  login: User1
  password: User1
  roles: user

User2:
  login: User2
  password: User2
  roles: admin, moderator

User3:
  login: User3
  password: User3
  roles: moderator
并且遇到了一个问题:在“rakedb:fixtures:load”上,rails抱怨连接表的名称:

class CreateUsersRoles < ActiveRecord::Migration
  def self.up
    create_table :users_roles, :id => false do |t|
      t.integer :user_id
      t.integer :role_id

      t.timestamps
    end
  end

  def self.down
    drop_table :users_roles
  end
end
SQLite3::SQLException:没有这样的表:角色\用户:从“角色\用户”中删除,其中1=1


问题是-为什么它需要“角色\用户”,而表是“用户\角色”?

当Rails为联接表创建关联时,它希望模型按字母顺序排列。因为r在u之前,所以它将其创建为
角色\u用户


我建议您重命名联接表,或者,您可以向这两个关联添加
:join\u table=>“users\u roles”

Rails为联接表创建关联时,希望模型按字母顺序排列。因为r在u之前,所以它将其创建为
角色\u用户

我建议您重命名联接表,或者,您可以向这两个关联添加
:join\u table=>“users\u roles”

# roles.yml 
user:
  name: user

admin:
  name: admin

moderator:
  name: moderator

# users.yml
User1:
  login: User1
  password: User1
  roles: user

User2:
  login: User2
  password: User2
  roles: admin, moderator

User3:
  login: User3
  password: User3
  roles: moderator