我有一个模型,我已经实现了一个返回一组记录的方法。有可能在Arel中引用它们吗?
class A < ActiveRecord::Base
#associations here
def self.mymeth
#return a set of records based on a query
B.select(col).joins(:cs).where(some_condition)
end
end
class B < ActiveRecord::Base
#associations here
end
class C < ActiveRecord::Base
#associations here
end
现在我怎样才能将mymeth引用到像
这样的东西 A.joins(:mymeth).where(condition).count
答案 0 :(得分:1)
您不是在寻找scopes吗?
class A < ActiveRecord::Base
scope :myscope, lambda { joins(:b).where(column: true) }
end
然后,您可以使用以下内容调用范围:
A.mymeth.where(col: false)
调用范围中添加的所有SQL条件将在调用时自动添加到查询中。