我正在尝试返回与标记主题相关的数据映射集合的交集。
在我们继续前进之前,我应该指出显而易见的事实:
@tags = Tag.all(:title => ["shim", "sham"])
@tags.topics
这将返回一个UNION,这意味着我将所有主题都以“shim”或“sham”作为标记。
我想要做的是将所有以“shim”和“sham”作为标签的文章归还。
@tags = Tag.all(:title => ["shim","sham"])
@blah = []
@blah << @tags.topics.first
@tags.each do |tag| @blah = @blah & tag.topics end
好的,我们有数据 - 现在我们还有一个问题。我们需要将它作为DataMapper集合,以便我可以有效地深入了解我的结果:
@topics = @blah(:order => [:created_at.desc], :limit => limit, :offset => offset)
这当然是不可能的,因为@blah现在是一个数组而不是DataMapper Collection。
上述更加简洁的版本:
@topics = Tag.all(:title => ["shim"]).topics & Tag.all(:title => ["sham"]).topics
虽然我们最终仍然得到一个阵列..... 根据{{3}},这应该是可能的
答案 0 :(得分:1)
这就是我完成它的方式:
words = query.split /,/
tags = Tag.all :label.in => words
photos = tags.shift.photos
tags.each do |tag|
@items &= tag.photos
end
似乎应该有更简洁的方法来做到这一点,但它确实有效。