0

所以我有两个 Rails 模型——用户和角色——每个模型都指定了一个 habtm 和一个 users_roles 连接表。

当我从我的用户表单中保存时,该表单具有可供选择的角色的复选框,rails 试图手动将一个值插入到连接表的 id 列中。这对我来说没有意义,因为 id 列应该设置为 auto_increment ,因此不需要传递给它的值。每当我尝试保存时,都会出现 MySQL 错误。

我错过了什么吗?

谢谢。

4

1 回答 1

1

如果您使用 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

也可以看看:

于 2010-01-22T10:15:34.483 回答