17

から直接継承するモデルがあり、レコードのテーブルのほとんどの列ActiveResource::Baseに対して実行しようとしていますが、結果はNameErrorです。alias_method

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 に答える