ruby-on-rails - Rails 选择值到属性中

标签 ruby-on-rails ruby activerecord

假设我有一个像这样的简单模型,它有一个名为“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/

相关文章:

ruby-on-rails - 如何在 Active Record 中的特定日期之后或之前搜索日期字段

mysql - Rails 统计记录而无需再次查询

ruby-on-rails - 从 Stripe 中的 invoice.payment_failed webhook 获取订阅 ID

ruby - 如何使用 Nix 而不是 Homebrew 在 OS X 上设置 Ruby?

ruby-on-rails - 如何从 Rails 中的 URL 获取查询字符串

ruby-on-rails - Rails 4 .order() 被 JOINS 破坏

javascript - 通过casperjs爬取后如何在json中插入数据?

ruby-on-rails - Rails 计算属性的数量

ruby-on-rails - Ruby 和 Rails 在星期几上存在差异?

ruby-on-rails - 在销毁相关模型更新之前,错误不会传播