タグ付けされたトピックに関連するデータマッパー コレクションの交差点を返そうとしています。
先に進む前に、明らかなことを指摘しておきます。
@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
わかりました、データはありますが、まだ 1 つの問題があります。これを DataMapper コレクションとして持つ必要があるため、次のように結果を効果的にドリルダウンできます。
@topics = @blah(:order => [:created_at.desc], :limit => limit, :offset => offset)
@blah は DataMapper コレクションではなく配列になっているため、これはもちろん不可能です。
上記のより簡潔なバージョン:
@topics = Tag.all(:title => ["shim"]).topics & Tag.all(:title => ["sham"]).topics
それでも配列になりますが..... http://www.mail-archive.com/datamapper@googlegroups.com/msg02092.htmlによると、これは可能であるはずです