mongoid自我与自我关系?

c2h*_*2h2 2 ruby web-crawler mongoid

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

class Link
  include Mongoid::Document
  include Mongoid::Timestamps
  field :url, type: String
  field :links, type: String
  index :url
  has_many :pages
end
Run Code Online (Sandbox Code Playgroud)

如果链接重复URL并且它们有许多入站/出站连接,我想让它工作,所以:

a_link.links  # => gives a list of outbound link objects.
Run Code Online (Sandbox Code Playgroud)

怎么用mongoid呢?

Ste*_*eve 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
Run Code Online (Sandbox Code Playgroud)

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