gpt4 book ai didi

mysql - Rails - find_by_sql + 存储过程

转载 作者:行者123 更新时间:2023-11-29 00:57:33 26 4
gpt4 key购买 nike

我正在尝试使用我创建的存储过程从我的 MySQL 数据库中获取对象。

@locs = Location.find_by_sql("CALL geodist(100.4058, 37.7907, 10000, 'Sample')")

这会导致以下错误

Location Load (6.4ms)  CALL geodist(100.4058, 37.7907, 10000, 'Sample')
Completed in 37ms

Mysql2::Error (Commands out of sync; you can't run this command now):

但是下面的工作正常:

@locations = Location.connection.select_all("CALL geodist(100.4058, 37.7907, 10000, 'Sample')")

但是,它不返回对象,只返回值的散列。

有什么方法可以让 find_by_sql 工作吗?如果没有,如何在不再次查询数据库的情况下手动实例化 AR 模型?

谢谢!

最佳答案

您可以通过将每个散列发送到事件记录模型的构造函数来自己构建对象

@locations = Location.connection.select_all("CALL geodist(100.4058, 37.7907, 10000, 'Sample')")
results = Array.new
@locations.each do |location|
results[] = Location.new(location)
end

更新:顺便说一下,这是一种奇怪的行为,我刚刚查看了 find_by_sql 方法的实现,它看起来很熟悉 http://api.rubyonrails.org/classes/ActiveRecord/Base.html#method-c-find_by_sql

关于mysql - Rails - find_by_sql + 存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5277854/

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