2016-02-12 4 views
0

Я использую Rails 4.2.3 и MySQL 5.5.37. Я хочу написать метод поиска для моей модели, так что я написал это (./app/models/user_object.rb):Проблема, определяющая метод поиска в моем приложении

class UserObject < ActiveRecord::Base 

    validates :day, :presence => true 
    validates_numericality_of :total 
    validates :object, :presence => true 

    def find_total_by_user_object_and_year 
    UserObject.sum(:total, :conditions => ['user_id = ?', params[:user_id], 'object = ?', params[:object], 'year(day) = ?', params[:year]]) 
    end 

end 

Однако, когда я пытаюсь вызвать метод в контроллере, как так

@my_total = UserObject.find_total_by_user_object_and_year(session["user_id"], 3, @year) 

Я получаю следующее сообщение об ошибке

undefined method `find_total_by_user_object_and_year' for #<Class:0x007fb7551514e0> 

Что такое правильный способ определить мой метод поиска?

ответ

2

Использование self.method определить метод класса:

def self.find_total_by_user_object_and_year 
    sum(:total, :conditions => ['user_id = ?', params[:user_id], 'object = ?', params[:object], 'year(day) = ?', params[:year]]) 
end 

В этом случае UserObject внутри определения метода класса является избыточным, besause он такой же, как self. Теперь вы можете написать:

UserObject.find_total_by_user_object_and_year(params) 
Смежные вопросы