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