Rails 选择值到属性中

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)

我实际上正在对另一个表进行更复杂的连接,并且我试图从连接表中选择一个字段到别名中,但我认为这将是一个更简单的示例。

kdd*_*isz 5

通常我使用方法而不是 attr_accessors 来做这些类型的别名。就像是

def aliased_name
  has_attribute?(:aliased_name) ? read_attribute(:aliased_name) : self.name
end
Run Code Online (Sandbox Code Playgroud)

has_attribute?有万一你没有使用你的查询负载的属性,所以你可以有一个缺省值。