我有一个表存储返回用户列表的查询。 然后我有一个方法“get_public”到一个“Banana”模型,它使用它们之间的逻辑AND执行多个查询。
所以,当我做的时候
Banana.find(x).get_public
我收到一个用户数组(适合该香蕉对象的用户)。
get_public方法是这样的:
def get_public
pb = []
banana_queries.each do |q|
pb << User.find_by_sql(q.query)
end
pb.inject(:'&')
end
但是,如果我能得到ActiveRecord :: Relation会更好。我想在以下之后做这样的事情:Banana.find(x).get_public.where(...)
有什么方法可以修改get_public并实现这个目的吗?
答案 0 :(得分:1)
我不确定我是否正确地解决了这个问题,但无论如何我都会尽力帮助。
如预期here
所以我建议将你的查询分成:'joins'和'where'字段。您的新代码应如下所示:
pb << User.joins(q.query_joins).where(q.query_where)
此外,在rails 4中也会弃用find方法,因此建议使用where。
希望我没有太多错过这一点: - )