2016-02-12 40 views
0

我正在使用Rails 4.2.3和MySQL 5.5.37。我想写一个finder方法为我的模型,所以我写了这个(./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) 
相关问题