typ*_*ror 2 ruby activerecord ruby-on-rails
假设我有一个像这样的简单模型,其中包含一个名为“name”的字段和一个名为“aliased_name”的属性:
class User < ActiveRecord::Base
attr_accessor :aliased_name
end
User.create(name: "Faye Kname")
Run Code Online (Sandbox Code Playgroud)
我可以:
user=User.select(:id, :name)
user.name # Faye Kname
Run Code Online (Sandbox Code Playgroud)
但是我如何使用select来填充aliased_name属性。
user=User.select(:id, "name AS aliased_name")
user.aliased_name # nil
user[:aliased_name] # Faye Kname
Run Code Online (Sandbox Code Playgroud)
我可以访问:aliased_name符号,但未分配属性。我想不必做
user.aliased_name = user[:aliased_name]
Run Code Online (Sandbox Code Playgroud)
我实际上正在对另一个表进行更复杂的连接,并且我试图从连接表中选择一个字段到别名中,但我认为这将是一个更简单的示例。
通常我使用方法而不是 attr_accessors 来做这些类型的别名。就像是
def aliased_name
has_attribute?(:aliased_name) ? read_attribute(:aliased_name) : self.name
end
Run Code Online (Sandbox Code Playgroud)
在has_attribute?有万一你没有使用你的查询负载的属性,所以你可以有一个缺省值。
| 归档时间: |
|
| 查看次数: |
1231 次 |
| 最近记录: |