私はチュートリアルに従い、レシピのウェブサイトにタグ付けメソッドを作成しました。私は、ユーザーが選択したALLタグを持つレシピを選択するフィルタを作成したいのですが、私のレシピのインデックスでRails 4:タグ付きフィルタ
class Recipe < ActiveRecord::Base
has_many :taggings
has_many :tags, through: :taggings
end
class Tag < ActiveRecord::Base
has_many :taggings
has_many :recipes, through: :taggings
end
class Tagging < ActiveRecord::Base
belongs_to :tag
belongs_to :recipe
end
:私は、次のモデルを持っています。
私は与えられたタグを持つすべてのレシピを引っ張っする方法があります。
def self.tagged_with(name)
Tag.find_by_name!(name).recipes
end
を...と私は単一のクエリに複数のタグを組み合わせることinject
を使用しようとしている:
def self.new_filter(tags) # tags is an array
tags.inject(Recipe.all) { |res, arg| res.tagged_with(arg) }
end
しかし、これはすべてのタグを含むレシピを返しません。最後のタグを含むレシピをtags配列に返します。すべてのタグを含むレシピのみを返すにはどうすればよいですか?
これは少なくともあなたが指摘することができる答えを持っているhttp://stackoverflow.com/questions/17920505/match-all-in-active-record-relations-in-a-queryと非常によく似た質問です正しい方向。 – Jim