我遇到了这个模型中的范围问题,我对如何最好地修复它感到茫然。我想从范围内调用distinct_mechanics_sql
来保持清洁,但是当我运行它时,我得到一个“未定义的局部变量或方法”错误。这是模型:
class Mechanics < ActiveRecord::Base
scope :with_moz, -> { joins("JOIN (#{distinct_mechanics_sql}) mh ON mh.mechanic_id = mechanics.id") }
def distinct_mechanics_sql
"""
SELECT DISTINCT ON (mechanic_id) *
FROM checkups
ORDER BY mechanic_id, updated_at DESC
"""
end
end
非常感谢任何帮助!
答案 0 :(得分:3)
范围与类方法相同,因此在范围内您隐式调用另一个类方法。并且您的distinct_mechanics_sql
是一个实例方法,要在范围内使用它,请将其声明为:
def self.distinct_mechanics_sql
或
def Mechanics.distinct_mechanics_sql
或
class << self
def distinct_mechanics_sql
...
end
end