Ruby on rails 如何使用Rails找到动态定义的方法

Ruby on rails 如何使用Rails找到动态定义的方法,ruby-on-rails,ruby,Ruby On Rails,Ruby,我想知道ActiveRecord::Base.connection.execute方法是如何定义的 所以我检查了源代码,但我不明白发生了什么 # Executes the SQL statement in the context of this connection. def execute(sql, name = nil) end undef_method :execute 也许该方法是在另一个地方动态定义的。 如何找到描述方法的位置?您显示的方法在模块数据库语句中定义,即将d包含在类抽象

我想知道
ActiveRecord::Base.connection.execute
方法是如何定义的

所以我检查了源代码,但我不明白发生了什么

# Executes the SQL statement in the context of this connection.
def execute(sql, name = nil)
end
undef_method :execute

也许该方法是在另一个地方动态定义的。
如何找到描述方法的位置?

您显示的方法在模块
数据库语句中定义,即
d包含在类
抽象适配器
(connection\u adapters/abstract\u adapter.rb)中


AbstractAdapter
只是作为Rails与之互操作的不同数据库服务器的各种专用数据库适配器的基类;它不打算单独实例化。例如,PostgreSQL数据库的
execute
定义在中,作为
类PostgreSQLAdapter
的一部分,它们在各自的适配器中定义

适配器位于以下目录名中,即*\u adapter.rb:

activerecord-x.x.x/lib/active_record/connection_adapters/

您可以在这些文件中看到
execute
方法的定义。例如:
mysql\u adapter.rb、postgresql\u adapter.rb等。

要了解如何定义
ActiveRecord::Base.connection.execute
方法,您应该查看正在使用的连接适配器类。
例如,如果您正在使用mysql db(通过mysql2 gem),您将在这里找到您正在使用的
execute
方法定义:

谢谢,我没有注意到这是一个抽象类。谢谢。现在我可以找到合适的.rb文件了。谢谢你的回答!