ActiveRecord :: Base上的alias_method导致NameError

Jel*_*Cat 17 ruby ruby-on-rails ruby-on-rails-2

我有一个直接继承的模型ActiveResource::Base,我正在尝试运行alias_method记录表中的大多数列,但结果是一个NameError:

NameError:未定义的方法address_line_1' for class LeadImport :: Base'

但我可以访问该属性:

LeadImport::Base.new.address_line_1 #=> nil (not error)
Run Code Online (Sandbox Code Playgroud)

我的类有一个名为table的列address_line_1,所以我没有看到问题所在.

class LeadImport::Base < ActiveRecord::Base
    alias_method :address_1, :address_line_1
end
Run Code Online (Sandbox Code Playgroud)

规范:Ruby 1.8.7,Rails 2.3.8

Pet*_*own 27

根据我发现的网站,您应该使用alias_attribute:

问题是ActiveRecord在数据库连接处于活动状态并且已解析表模式之前不会动态创建访问器方法.课程加载后很长一段时间.

class LeadImport::Base < ActiveRecord::Base
  alias_attribute :address_1, :address_line_1
end
Run Code Online (Sandbox Code Playgroud)