17

我有一个直接从 继承的模型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

4

1 回答 1

28

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

问题是 ActiveRecord 不会动态创建访问器方法,直到数据库连接处于活动状态并且它已经解析了表模式。在加载类之后很长时间。

class LeadImport::Base < ActiveRecord::Base
  alias_attribute :address_1, :address_line_1
end
于 2012-09-06T22:22:29.577 回答