2012-09-06 4 views
14

Ho un modello eredita direttamente da ActiveResource::Base, e sto cercando di eseguire alias_method per la maggior parte delle colonne della tabella del record, ma il risultato è un NameError:alias_method su ActiveRecord :: Base risultati in NameError

NameError: undefined method address_line_1' for class LeadImport::Base'

Eppure posso accedere all'attributo:

LeadImport::Base.new.address_line_1 #=> nil (not error) 

la mia classe ha una colonna tabella denominata address_line_1, quindi non vedo il problema.

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

spec: rubino 1.8.7, Rails 2.3.8

risposta

23

Secondo un sito che ho trovato, si suppone di utilizzare alias_attribute invece:

The problem is that ActiveRecord doesn't create the accessor methods on the fly until the database connection is live and it has parsed the table schema. That's a long time after the class has been loaded.

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

ho aggiornato la mia risposta con qualcosa che dovrebbe funzionare :) –