0

私は、(同じ種類の)2つのオブジェクト間の双方向リンクを保存すると思われる単純なモデル "Match"を持っています。レールでの双方向グラフ

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 

私の問題は、各双方向マッチで2つのデータベースエントリが見つかりました。例えば。 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 

かなり醜い。一意のデータベースインデックスを追加します。