【问题标题】:Bidirectional graph in railsrails中的双向图
【发布时间】:2009-07-24 17:36:07
【问题描述】:

我有一个简单的模型“匹配”,它应该保存两个对象(相同类型)之间的双向链接。

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

但这没有用。

【问题讨论】:

    标签: ruby-on-rails activerecord bidirectional validates-uniqueness-of


    【解决方案1】:
    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
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-10
      • 1970-01-01
      • 2012-04-04
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 2012-06-13
      相关资源
      最近更新 更多