从 ApplicationRecord 中的 class 方法调用方法

Calling a method from a class method in ApplicationRecord

我有一个奇怪的问题 我有以下实现: 在控制器中 Event.search(search_params)

class Event < ApplicationRecord
  def self.search(params)
    find_events(params)
  end
  private

  def find_events(params)
    events = Event.upcoming
    events = events.where("name like ?", "%#{params['name']}%")
    events
  end 
end

执行时出现此错误:

NoMethodError (undefined method `find_events' for #<Class:0x007fadcd00a690>)

我的代码有什么问题?

您必须使用

声明 class 方法
def self.find_events

如果没有实例对象附加到该方法,则无法从 class 方法调用实例方法。