2010-01-22 23 views
0

所以我有兩個rails模型 - 用戶和角色 - 每個都指定了habtm和users_roles的連接表。Rails試圖發送一個habtm模型連接表的id?

當我從我的用戶表單保存時,其中有複選框可供選擇的角色,rails試圖手動將值插入到連接表的id列中。這對我沒有意義,因爲id列應該設置爲auto_increment,因此不需要傳遞給它的值。任何時候我嘗試保存,我會得到一個MySQL錯誤。

我錯過了什麼嗎?

謝謝。

+1

您可以在控制器操作中包含發生這種情況的代碼,也可以是您設置關聯的模型部分? – 2010-01-22 04:07:41

回答

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 

參見: