2011-02-22 2 views
2

У меня есть старая таблица устаревших имен «DXFTACCTS», и я создал модель «Учетная запись» Rails.Модель Rails 3, сопоставляющая определенные столбцы с разными атрибутами модели

class Account < ActiveRecord::Base 
    set_table_name "DXFTACCTS" 
end 

Проблема заключается в том, что DXFTACCTS имеет такие поля, как «XORFNAME», которые я хочу быть «first_name» в модели, и так далее. Как «сопоставить» конкретные столбцы таблицы с атрибутами модели?

Спасибо!

ответ

9

Вы можете использовать метод alias_attribute так:

class Account < ActiveRecord::Base 
    set_table_name "DXFTACCTS" 

    alias_attribute :first_name, :XORFNAME 
end 

alias_attribute создает методы first_name, first_name = и first_name? который будет отображаться в столбце XORFNAME в вашей таблице. Однако вы не сможете использовать его в таких условиях, как обычные столбцы. Например:

Account.all(:conditions => { :first_name => "Foo" }) 

Это не даст ...

2

Я думаю, что что-то подобное определению методов получения и установки следует сделать трюк:

class Account < ActiveRecord::Base  

    ... 

    def firts_name 
    self[:XORFNAME] 
    end 

    def first_name= value 
    self[:XORFNAME] = value 
    end 

    ... 

end 
+0

Вот что я боялся :-( – alexeypro

+0

DanneManne ниже предложенного короткого и лучшего способа, что я не знал раньше. – Antiarchitect

 Смежные вопросы

  • Нет связанных вопросов^_^