无法在我的应用程序中定义查找器方法
Trouble defining finder method in my application
我正在使用 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>
定义查找器方法的正确方法是什么?
使用self.method
定义class方法:
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
里面的 class 方法定义是多余的,因为它与 self
相同。现在你可以写:
UserObject.find_total_by_user_object_and_year(params)
我正在使用 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>
定义查找器方法的正确方法是什么?
使用self.method
定义class方法:
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
里面的 class 方法定义是多余的,因为它与 self
相同。现在你可以写:
UserObject.find_total_by_user_object_and_year(params)