如何在rails模型中为类方法添加别名?

bec*_*076 18 ruby ruby-on-rails

我想在我的一个Rails模型上为一个类方法添加别名.

  def self.sub_agent
   id = SubAgentStatus.where(name: "active").first.id
   where(type: "SubAgent",sub_agent_status_id: id).order(:first_name)    
  end
Run Code Online (Sandbox Code Playgroud)

如果这是一个实例方法,我会简单地使用alias_method,但这对类方法不起作用.如何在不重复方法的情况下执行此操作?

moh*_*him 29

您可以使用:

class Foo  
   def instance_method       
   end  

   alias_method :alias_for_instance_method, :instance_method

   def self.class_method
   end  

   class <<self  
     alias_method :alias_for_class_method, :class_method
   end  
 end  
Run Code Online (Sandbox Code Playgroud)

或尝试:

self.singleton_class.send(:alias_method, :new_name, :original_name)
Run Code Online (Sandbox Code Playgroud)

  • 我觉得有人忘了〜 (5认同)