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

但这没有用。

4

1 回答 1

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

很难看。添加一些唯一的数据库索引。

于 2009-07-25T04:50:28.937 回答