【发布时间】:2016-07-06 09:59:11
【问题描述】:
我想知道是否可以使用模型实例方法作为 where 子句查询。我是说。我有一个定义了方法的模型学校
class School < ActiveRecord::Base
def my_method
users.where(blablabla).present?
end
end
是否有可能得到类似的东西:
School.all.where(my_method: true)
我知道我可以这样做:
School.all.map{|x| x if x.my_method}
但与 where 查询相比,这种方式在性能上的损失很大。此外,我正在搜索的返回是一个 ActiveRecord Relation 并且 map 返回一个数组。
更新:
还有另一种方法:
School.all.joins(:users).where("users.attribute = something")
但这并不完全符合我的要求,原因有几个。
提前致谢
【问题讨论】:
-
你要通过rails范围吗,请通过它..这可能是你正在寻找stackoverflow.com/questions/4869994/…
-
如果你能说明你的方法应该达到什么目的,你的问题可能会更容易理解。你应该为他们解释你的设计决定。您是在尝试评估方法并将其结果发送到“where”,还是尝试为“where”动态创建条件。
标签: ruby-on-rails activerecord where-clause