我对这个模型中的范围有问题,我不知道如何最好地修复它。我想从范围内调用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
任何帮助都将不胜感激!
最佳答案
作用域与类方法相同,因此在作用域内隐式调用另一个类方法。而distinct_mechanics_sql
是一个实例方法,在作用域内使用它时声明为:
def self.distinct_mechanics_sql
或
def Mechanics.distinct_mechanics_sql
或
class << self
def distinct_mechanics_sql
...
end
end