gpt4 book ai didi

ruby-on-rails - ActiveRecord 提取到 SQL

转载 作者:行者123 更新时间:2023-12-04 02:04:24 27 4
gpt4 key购买 nike

我知道这两个语句执行相同的 SQL:

使用 select

User.select(:email)
# SELECT `users`.`email` FROM `users`

并使用 pluck
User.all.pluck(:email)
# SELECT `users`.`email` FROM `users`

现在我需要获取从每个方法派生的 SQL 语句。鉴于 select方法返回 ActiveRecord::Relation ,我可以调用 to_sql方法。但是,我无法弄清楚如何获取从 ActiveRecord::Relation 上的 pluck 操作派生的 SQL 语句。对象,假设结果是一个数组。

请考虑到这是对问题的简化。采摘的属性数量可以任意高。

任何帮助,将不胜感激。

最佳答案

不能链条 to_sqlpluck因为它不返回 ActiveRecord::relation .如果您尝试这样做,它会引发这样的异常

NoMethodError: undefined method `to_sql' for [[""]]:Array

I cannot figure out how to get the SQL statement derived from a pluck operation on an ActiveRecord::Relation object, given that the result is an array.



好吧,就像 @cschroed 在评论中指出,它们( selectpluck)都执行 相同的 SQL 查询 .唯一的区别是 pluck返回 array而不是 ActiveRecord::Relation .它 没关系您尝试提取多少个属性,SQL 语句将与 select 相同

示例:
User.select(:first_name,:email)
#=> SELECT "users"."first_name", "users"."email" FROM "users"
pluck 相同也
User.all.pluck(:first_name,:email)
#=> SELECT "users"."first_name", "users"."email" FROM "users"

因此,您只需要获取 select 返回的 SQL 语句即可。并相信 pluck 也是如此.就是这样!

关于ruby-on-rails - ActiveRecord 提取到 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45926450/

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