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

ale*_*pro 2 ruby sql legacy activerecord ruby-on-rails-3

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

class Account < ActiveRecord::Base
  set_table_name "DXFTACCTS"
end
Run Code Online (Sandbox Code Playgroud)

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

谢谢!

Dan*_*nne 10

您可以像这样使用方法alias_attribute:

class Account < ActiveRecord::Base
  set_table_name "DXFTACCTS"

  alias_attribute :first_name, :XORFNAME
end
Run Code Online (Sandbox Code Playgroud)

alias_attribute创建方法first_name,first_name =和first_name?它将映射到表中的XORFNAME列.但是,您将无法在常规列等条件下使用它.例如:

Account.all(:conditions => { :first_name => "Foo" })
Run Code Online (Sandbox Code Playgroud)

那会失败......