我对这个模型中的范围有问题,我不知道如何最好地修复它。我想从范围内调用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

08-25 15:11
查看更多