gpt4 book ai didi

ruby-on-rails - 在 rails 控制台中预览 activerecord 查询?

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

有没有办法在 Rails 控制台中预览查询而不执行它们?

编辑:我希望能够在不执行它们的情况下预览破坏性查询:

u = User.first
d = User.open_documents.first

我想在不执行的情况下预览:
u.open_documents.delete(d)

在表达式末尾添加 .to_sql 的建议答案适用于
u.open_documents.to_sql

但是当被召唤时
u.open_documents.delete(d).to_sql

执行 delete(!) 并产生错误:
NoMethodError: undefined method `to_sql' for #<Array:0x585e4a8>

当这样调用时,我也会收到错误消息:
u.open_documents.first.to_sql
NoMethodError: undefined method `to_sql' for #<Array:0x585e4a8>

任何解决方法的想法?

最佳答案

您可以在 ActiveRecord::Relation 上调用 .to_sql 以查看将要执行的 SQL。

User.where(:id => 4).to_sql
=> "SELECT \"users\".* FROM \"users\" WHERE \"users\".\"id\" = 4"

此外,控制台只会自动执行关系(并实例化对象),前提是它是该行的最后一个命令,因此您可以执行以下操作:
relation = User.where(:id => 4); 1
=> 1

从而在不运行它的情况下为关系设置一个变量。

我实际上不确定您想要做这两个中的哪一个,但它们都是方便的技巧。

关于ruby-on-rails - 在 rails 控制台中预览 activerecord 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10033191/

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