【问题标题】:Rails trying to send the id for a habtm model join table?Rails 试图发送一个 habtm 模型连接表的 id?
【发布时间】:2010-01-22 03:57:27
【问题描述】:

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

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

我错过了什么吗?

谢谢。

【问题讨论】:

  • 您能否包含发生这种情况的控制器操作中的代码,以及您设置关联的模型部分?

标签: ruby-on-rails model has-and-belongs-to-many


【解决方案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

另见:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多