0

我有一個簡單的模型「匹配」,應該保存兩個對象(同一種)之間的雙向鏈接。軌道雙向圖

class Match < ActiveRecord::Base 
    belongs_to :obj1, :class_name => "MyModel", :foreign_key => :obj1_id 
    belongs_to :obj2, :class_name => "MyModel", :foreign_key => :obj2_id 

... 
end 

我的問題是,對於每個雙向匹配,我發現我得到兩個數據庫條目。例如。 1:obj1 - > obj2, 2:obj2 - > obj1

如何使用validates_uniqueness_of來避免此問題?我試過

validates_uniqueness_of :obj1_id, :scope => :obj2_id 
validates_uniqueness_of :obj2_id, :scope => :obj1_id 

但是沒有工作。

回答

0
validates_uniqueness_of :obj1_id, :scope => :obj2_id 

def validate 
    if find(:first, :conditions => { :obj1 => obj2, :obj2 => obj1 }) 
    errors.add_to_base("already exists") 
    end 
end 

很醜。添加一些獨特的數據庫索引