如何在Arel中混合/引用/调用自定义ActiveRecord方法

时间:2013-07-22 13:11:21

标签: ruby activerecord arel

我有一个模型,我已经实现了一个返回一组记录的方法。有可能在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

1 个答案:

答案 0 :(得分:1)

您不是在寻找scopes吗?

class A < ActiveRecord::Base

  scope :myscope, lambda { joins(:b).where(column: true) }
end

然后,您可以使用以下内容调用范围:

A.mymeth.where(col: false)

调用范围中添加的所有SQL条件将在调用时自动添加到查询中。