Модель Rails 3 отображает определенные столбцы в разные атрибуты модели - PullRequest
2 голосов
/ 22 февраля 2011

У меня есть старая унаследованная таблица с именем "DXFTACCTS", и я создал модель Rails "Account".

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

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

Спасибо!

Ответы [ 2 ]

10 голосов
/ 22 февраля 2011

Вы можете использовать метод 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 голосов
/ 22 февраля 2011

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

class Account < ActiveRecord::Base    

  ...

  def firts_name
    self[:XORFNAME]
  end

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

  ...

end  
...