gpt4 book ai didi

ruby-on-rails - find_by_sql 无法在 rails 3.1.3 上运行

转载 作者:太空宇宙 更新时间:2023-11-03 18:27:52 24 4
gpt4 key购买 nike

我在 Ruby on Rails 3.1.3 中编写了一个非常复杂的查询,并且我正在使用 find_by_sql。

但我注意到一个非常奇怪的行为,即使我使用 find_by_sql 进行非常简单的查询也是如此。

这是一个简单的例子:

假设我有两个模型和相关表:

Model 1: Company
Table 1: companies
fields: id, name, address

| id | name | address |
+----+------+-----------------+
| 1 | ACME | Bond street, 56 |

和:

Model 2: Employee
Table 2: employees
fields: id, name, age

| id | name | age |
+----+------+-----+
| 1 | Fred | 56 |
| 2 | Adam | 27 |

事情是这样的;如果我写:

Company.find_by_sql("SELECT * FROM `employees`")

我得到:

Company Load (0.3ms)  SELECT * from `employees`
=> [#<Company id: 1, name: "Fred">, #<Company id: 2, name: "Adam">]

我只得到名字与公司名称匹配的员工的字段(即缺少年龄字段)!根本没有@attributes。

这是一个错误吗?谁能帮帮我?

最佳答案

控制台使用 pretty-print 从查询返回的任何实例中输出数据。 pretty-print 由 ActiveRecord 根据与特定模型相关联的列在类中自动实现,因此不会显示不属于该特定模型的属性。

但这并不意味着属性没有加载到实例中。漂亮的打印只是没有显示它们,但它们仍然存在。

所以如果你只是这样做:

Company.find_by_sql("SELECT * from employees").first.age

根据您的示例,您应该仍然得到56

关于ruby-on-rails - find_by_sql 无法在 rails 3.1.3 上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8371164/

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