gpt4 book ai didi

ruby-on-rails - rails - 获取模型保存的 SQL

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

我需要能够输出 Rails 生成的 SQL 更新,而不需要实际运行它们或保存记录。我将改为将 SQL 更新输出到一个文件。

有没有办法在 Rails 中做到这一点,而不使用字符串插值?

是否可以做类似下面的事情:

p = Post.where (something)

p.some_value = some_new_value

p.to_sql??? # how to generate the update statement

而不是:

"UPDATE TABLE SET field_1 = #{new_field} WHERE ID = " etc etc

最佳答案

取自@R.F. Nelson 并将其包装到一个方法中。您可以使用您的模型作为参数调用 to_update_sql 来获取 SQL。

def to_update_sql(model)
return '' if model.changes.empty?

table = Arel::Table.new(model.class.table_name)
update_manager = Arel::UpdateManager.new(model.class)
update_manager.set(model.changes.map{|name, (_, val)| [table[name], val] })
.where(table[:id].eq(model.id))
.table(table)

return update_manager.to_sql
end

post = Post.first
post.some_value = xxxx

to_update_sql(post)
# => UPDATE `posts` SET `some_value` = xxx WHERE `posts`.`id` = 1

关于ruby-on-rails - rails - 获取模型保存的 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50294399/

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