タグ付けシステムの実装に取り組んでいますが、スコープを使用してタグ付けされたオブジェクトをクエリする際に問題が発生します。
たとえば、特定のタグが付いたすべてのユーザーのアイテムを検索したいと思います。クラスメソッドを使用すると、現在すべてのオブジェクトを見つけることができます。
def self.tagged_with(name)
Tag.find_by_name(name).items
end
ただし、これには問題があります。次のようなことをした場合:current_user.items.tagged_with(name)
この既存のメソッドは、current_userが所有するアイテムだけでなく、すべてのアイテムを返しますか?これは単なるクエリの問題だと思いますが、クラスメソッドをコレクションで呼び出されるものに変更する方法がわかりません。私は反対の方法で、タグを介してコレクションを取得しようとしましたtag.items.where(:user_id => current_user.id)
が、この場合、それは多対多の関係であり、これについても理解できませんでした。
このようなクエリを制限する適切な方法は何ですか?