0

使用

  result = Model.select(Model.table_name + '.*')
  result = result.select(47 AS new_column)
  result = result.where(...).order(...).limit(...) # etc.

  result.to_a # gives an array of Model instances

我需要访问 new_column 值作为模型实例的属性。

我不想在模型上创建计算属性;数据必须来自构造的查询。必须加载非数据库列的数据,因为模型实例被#to_a

我已经阅读了在 ActiveRecord 查询中合并自定义 SELECT 子句在 Rails ActiveRecord 查询中返回自定义列,它们看起来相关但不相关。

具有嵌套模型和派生列值的 ActiveRecord 查询?通过 ActiveRecord 访问 SQL 计算列,并将计算列添加到 ActiveRecord 查询看起来像是在回答我的问题,但他们似乎说来自源查询的额外列值会自动附加到模型实例,而一个只是添加访问器以获取它们(或不获取它们)。

我已将attr_accessor新列的名称添加到模型的类中,但是当我将其作为 graphQL 响应返回时,这些属性似乎没有被序列化。我在哪里可以找到有关 AciveRecord#attributes 数组的实际机制以及如何向其中添加非数据库列的信息?

干杯

4

1 回答 1

0

有时,Rails 真的很酷

查询的结果是膨胀模型实例的一部分,但需要访问器(getter)才能看到它。

在任何情况下,attributes哈希都有额外的列

于 2018-03-24T22:46:39.517 回答