NameError:在轨道4,5

问题描述:

在模型中未定义的方法'某某 '类'国':NameError:在轨道4,5

class State < ActiveRecord::Base 

    belongs_to :country 

    alias_method :abc, :xyz 

    def self.xyz 

    end 
end 

在日志:

1.9.3-p551 :005 > State.abc 
NameError: undefined method 'xyz' for class 'State' 

我在轨是新来alias_method。请帮助我。

这与Rails无关,alias_method是尝试使用Rails之前的红宝石本身的一部分,which you really should learn

这里的问题在于你已经将xyz定义为类/单例方法,但调用alias_method就像你已经完成了对实例方法的工作。

为了使您的代码正常工作,您必须为类方法定义alias_method,因为您拥有的是实例方法的alias_method的定义。

class State < ActiveRecord::Base 

    belongs_to :country 

    class << self 
    alias_method :abc, :xyz 

    def xyz 
     'Hello' 
    end 
    end 
end 

State.abc 
Hello 
=> nil 
+0

我收到同样的错误'1.9.3-P551:001> State.abc NameError:未定义的方法'XYZ”类'类 '使用您的代码后, – 2015-03-13 07:09:04