我在这个模型中遇到了范围问题,我不知道如何最好地解决它。我想从范围内调用 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
关于ruby-on-rails - 从 Active Record 范围内访问类方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27259171/