gpt4 book ai didi

postgresql - Rails 忽略 SQL SELECT 语句中的常量

转载 作者:行者123 更新时间:2023-11-29 13:30:47 25 4
gpt4 key购买 nike

要让 Rails 识别 SQL select 语句中的常量需要什么技巧吗?例如,下面的 SQL 语句是有效的:

SELECT id, name, 1 AS constant FROM table_name

我希望结果返回三列:idnameconstantconstant 列中的值始终为 1。

但是,在 Rails 中,如果我尝试做同样的事情,常量列将使用 Model.find_by_sql 删除:

TableName.find_by_sql("SELECT id, name, 1 AS constant FROM table_name")

ActiveRecord::Base.connection.execute("SELECT id, name, 1 AS constant FROM table_name")

这是 Rails 4.0 中的错误或已知限制,还是有其他我没有尝试过的方法?

最佳答案

是什么让您认为您的常量 不存在?来自fine manual :

find_by_sql(sql, binds = [])
[...]
If you call a complicated SQL query which spans multiple tables the columns specified by the SELECT will be attributes of the model, whether or not they are columns of the corresponding table.

强调我的。所以如果你这样说:

a = TableName.find_by_sql("SELECT id, name, 1 AS constant FROM table_name")

然后你可以说 a.first.constant 并得到一些东西。请注意,您可能在控制台中查看的常用 inspect 输出不会包含 constant,因为 AR 的 inspect 只知道表列;你会在控制台中看到类似这样的东西:

[#<TableName id: 6, name: "Pancakes">, ...]

但对象将以 '1' 响应 constant 调用;是的,它们可能是字符串,您必须自己整理类型转换。

关于postgresql - Rails 忽略 SQL SELECT 语句中的常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24131189/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com