我正在实施一个标记系统,但在查询带有范围的标记对象时遇到问题。
例如,我想查找具有特定标签的所有用户项目。使用类方法,我目前可以找到所有对象:
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)
但在这种情况下,这是一个多对多的关系,我也无法掌握这一点。
限制这样的查询的正确方法是什么?