0

したがって、ユーザーとロールの 2 つの Rails モデルがあり、それぞれが habtm と users_roles の結合テーブルで指定されています。

選択するロールのチェックボックスがあるユーザーフォームから保存すると、レールは結合テーブルの 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 に答える