2013-02-14 36 views
0

軌道,我有這樣的架構(用於汽車和用戶的habtm之間的連接表)怎麼會重複的行與模式

create_table "cars_users", :id => false, :force => true do |t| 
    t.integer "user_id" 
    t.integer "car_id" 
    end 

    add_index "cars_users", ["car_id", "user_id"], :name => "index_cars_users_on_car_id_and_user_id" 
    add_index "cars_users", ["user_id", "car_id"], :name => "index_cars_users_on_user_id_and_car_id" 

但由於一些bug被創建,我在這個表中重複的行。

應該不是index這句柄嗎?

回答

1

嘗試:

add_index :cars_users, [ :user_id, :car_id ], :unique => true, :name => 'by_user_and_car' 

它會拋出一個異常,但你可以添加自己的驗證

class User < ActiveRecord::Base 
    has_and_belongs_to_many :cars, :before_add => :validates_car 
    def validates_car(car) 
    errors.add(:car, "already created") if self.cars.include? car 
    end 
end