Rails 尝试发送 habtm 模型连接表的 id?

发布于 2024-08-18 17:31:12 字数 237 浏览 3 评论 0原文

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

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

我错过了什么吗?

谢谢。

So I have two rails models - user and role - each specified with a habtm and a join table of users_roles.

When I save from my user form, which has checkboxes for which roles to choose, rails is trying to manually insert a value into the id column of the join table. This doesn't make sense to me, as the id column should be set to auto_increment and so wouldn't need a value passed to it. Any time I try to save, I get a MySQL error.

Am I missing something?

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

你又不是我 2024-08-25 17:31:12

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

另请参阅:

if you are using the has_and_belongs_to_many association then you don't need any model for the join table and the join table should not be created with an id column, it has to contain only the user_id and role_id columns:

   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

See also:

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文