所以我有两个 Rails 模型——用户和角色——每个模型都指定了一个 habtm 和一个 users_roles 连接表。
当我从我的用户表单中保存时,该表单具有可供选择的角色的复选框,rails 试图手动将一个值插入到连接表的 id 列中。这对我来说没有意义,因为 id 列应该设置为 auto_increment ,因此不需要传递给它的值。每当我尝试保存时,都会出现 MySQL 错误。
我错过了什么吗?
谢谢。
所以我有两个 Rails 模型——用户和角色——每个模型都指定了一个 habtm 和一个 users_roles 连接表。
当我从我的用户表单中保存时,该表单具有可供选择的角色的复选框,rails 试图手动将一个值插入到连接表的 id 列中。这对我来说没有意义,因为 id 列应该设置为 auto_increment ,因此不需要传递给它的值。每当我尝试保存时,都会出现 MySQL 错误。
我错过了什么吗?
谢谢。
如果您使用 has_and_belongs_to_many 关联,则连接表不需要任何模型,并且连接表不应使用 id 列创建,它必须仅包含 user_id 和 role_id 列:
class CreateUsersRolesJoinTable < ActiveRecord::Migration
def self.up
create_table :users_roles, :id => false do |t|
t.integer :user_id
t.integer :role_id
end
end
def self.down
drop_table :users_roles
end
end
也可以看看: