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

发布于 2024-10-18 15:19:06 字数 249 浏览 1 评论 0原文

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

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

问题是 DXFTACCTS 具有诸如“XORFNAME”之类的字段,我希望将其作为模型中的“first_name”,等等。如何将特定表列“映射”到模型属性?

谢谢!

I have the old legacy table called "DXFTACCTS", and I created Rails model "Account".

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

The problem is that DXFTACCTS has fields like "XORFNAME" which I want to be "first_name" in the model, and so on. How do I "map" specific table columns to model attributes?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

許願樹丅啲祈禱 2024-10-25 15:19:06

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

那将会失败...

You can use the method alias_attribute like this:

class Account < ActiveRecord::Base
  set_table_name "DXFTACCTS"

  alias_attribute :first_name, :XORFNAME
end

alias_attribute creates the methods first_name, first_name= and first_name? which will map to the XORFNAME column in your table. However, you will NOT be able to use it in conditions like regular columns. For example:

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

That will fail...

潇烟暮雨 2024-10-25 15:19:06

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

class Account < ActiveRecord::Base    

  ...

  def firts_name
    self[:XORFNAME]
  end

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

  ...

end  

I think something like definition of getter and setter methods should do the trick:

class Account < ActiveRecord::Base    

  ...

  def firts_name
    self[:XORFNAME]
  end

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

  ...

end  
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文