假设我有一个像这样的简单模型,它有一个名为“name”的字段和一个名为“aliased_name”的属性:
class User < ActiveRecord::Base
attr_accessor :aliased_name
end
User.create(name: "Faye Kname")
我能做到:
user=User.select(:id, :name)
user.name # Faye Kname
但是我如何使用 select
来填充 aliased_name
属性。
user=User.select(:id, "name AS aliased_name")
user.aliased_name # nil
user[:aliased_name] # Faye Kname
我可以访问 :aliased_name
符号,但未分配该属性。我不想做
user.aliased_name = user[:aliased_name]
我实际上是在另一个表上进行更复杂的连接,我试图从连接表中选择一个字段到别名中,但我认为这将是一个更简单的示例。
最佳答案
通常我用方法而不是 attr_accessors 来做这些别名。有点像
def aliased_name
has_attribute?(:aliased_name) ? read_attribute(:aliased_name) : self.name
end
has_attribute?
是为了防止您没有在查询中加载该属性,所以您可以使用默认值。
关于ruby-on-rails - Rails 选择值到属性中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35422775/