ActiveRecord :: Base上的alias_method导致NameError

时间:2012-09-06 22:15:44

标签: ruby-on-rails ruby 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)

我的类有一个名为address_line_1的表列,所以我没有看到问题。

class LeadImport::Base < ActiveRecord::Base
    alias_method :address_1, :address_line_1
end

规范:Ruby 1.8.7,Rails 2.3.8

1 个答案:

答案 0 :(得分:26)

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

  

问题是ActiveRecord不会创建访问器方法   在数据库连接正常运行之前,它已经解析了   表模式。课程加载后很长一段时间。

class LeadImport::Base < ActiveRecord::Base
  alias_attribute :address_1, :address_line_1
end