【问题标题】:Trouble defining finder method in my application在我的应用程序中定义查找器方法时遇到问题
【发布时间】:2016-02-12 21:07:12
【问题描述】:

我使用的是 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>

定义查找器方法的正确方法是什么?

【问题讨论】:

    标签: mysql ruby-on-rails methods undefined finder


    【解决方案1】:

    使用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内部类方法定义是多余的,因为它与self相同。现在你可以写:

    UserObject.find_total_by_user_object_and_year(params)
    

    【讨论】:

      猜你喜欢
      • 2021-05-17
      • 1970-01-01
      • 2012-05-07
      • 2015-07-30
      • 1970-01-01
      • 2017-01-13
      • 2021-05-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多