new*_*ere 4 ruby activerecord ruby-on-rails ruby-on-rails-4
我对该模型中的范围有疑问,并且不知道如何最好地解决它。我想distinct_mechanics_sql在范围内调用 from 以使事情更清晰,但是当我运行它时,我收到“未定义的局部变量或方法”错误。这是模型:
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
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激!
作用域与类方法相同,因此在作用域内您隐式调用另一个类方法。您distinct_mechanics_sql是一个实例方法,要在范围内使用它,请将其声明为:
def self.distinct_mechanics_sql
Run Code Online (Sandbox Code Playgroud)
或者
def Mechanics.distinct_mechanics_sql
Run Code Online (Sandbox Code Playgroud)
或者
class << self
def distinct_mechanics_sql
...
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1849 次 |
| 最近记录: |