Rails 3模型将某些列映射到不同的模型属性

我有一个名为“DXFTACCTS”的旧遗留表,我创建了Rails模型“Account”。

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

问题是DXFTACCTS有像“XORFNAME”这样的字段,我希望它在模型中是“first_name”,依此类推。 如何将特定表列“映射”到模型属性?

谢谢!

您可以像这样使用方法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" }) 

那会失败......

我认为像getter和setter方法的定义应该可以解决这个问题:

 class Account < ActiveRecord::Base ... def firts_name self[:XORFNAME] end def first_name= value self[:XORFNAME] = value end ... end