大家好我有一个类似于下面的类的爬虫模型:
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呢?
答案 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