mongoid自我与自我关系?

时间:2011-09-21 08:35:41

标签: ruby mongoid web-crawler

大家好我有一个类似于下面的类的爬虫模型:

class Link
  include Mongoid::Document
  include Mongoid::Timestamps
  field :url, type: String
  field :links, type: String
  index :url
  has_many :pages
end

如果链接重复URL并且它们有许多入站/出站连接,我希望它能够正常工作,所以:

a_link.links  # => gives a list of outbound link objects.

你怎么用mongoid呢?

2 个答案:

答案 0 :(得分:9)

您可以在关系的每一侧使用has_and_belongs_to_many设置多个关联。

class Link
  include Mongoid::Document
  has_and_belongs_to_many :links, :class_name => 'Link', :inverse_of => :inbound_links
  has_and_belongs_to_many :inbound_links, :class_name => 'Link', :inverse_of => :links
end

由于在这种情况下关联是来自同一个类,你需要为mongoid提供class_name和inverse_of的一点帮助,因为它无法从关联名称中推断出它。

答案 1 :(得分:2)

使用许多关联来存档它的一种更简洁的方法

class Link
  include Mongoid::Document
  has_and_belongs_to_many :links, class_name: 'Link', inverse_of: :links
end
相关问题