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