1
我在这个模型中的范围有问题,我在如何最好地解决它的输了。我想从范围内调用distinct_mechanics_sql
以保持事物更清洁,但是当我运行这个时,我得到一个“未定义的局部变量或方法”错误。这里是模型:从Active Record范围内访问类方法?
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
任何帮助将不胜感激!
谢谢!既然它只是一个我插入到范围调用中的字符串,有没有更好的方法来做到这一点?将它作为一个类常量存储?你会推荐什么类似的东西? – newUserNameHere 2014-12-02 21:32:36
我不建议你使用范围,以及纯SQL。你应该尽量使用ORM。现在,我建议您将所有这些东西都移到一个类的方法中。然后,如果您无法将代码从纯SQL更改为AR调用,则可以将关系和工作类方法显示给社区([codereview](http://codereview.stackexchange.com/))以进行改进。 – 2014-12-02 21:40:44
谢谢。我不知道codereview,我会用它。 – newUserNameHere 2014-12-02 21:44:11