ruby-on-rails - 如何使用 Rails 查找动态定义的方法

标签 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

https://github.com/rails/rails/blob/c13284131511fb7871a85659dd0b5e821d9ad29b/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb#L55

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

最佳答案

您显示的方法在模块中定义 DatabaseStatements这是 include d入类AbstractAdapter (connection_adapters/abstract_adapter.rb)。

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

关于ruby-on-rails - 如何使用 Rails 查找动态定义的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17360041/

相关文章:

sql - 如何使用 NuoDB 在 Ruby On Rails 中手动执行 SQL 命令

ruby-on-rails - 使用 Ruby On Rails 在 AJAX 中进行星级评定

ruby-on-rails - Rails 2.3 基于其他关联的动态 has_many 条件

ruby - 如何生成随机数的总和?

ruby-on-rails - 剥离 rails 仅供 api 使用

ruby-on-rails - 带有来自枚举(散列)的复选框的 Rails 表单

ruby-on-rails - 如何将参数从 View 传递到 Controller 并将其保存到变量中?

ruby - Ruby MetaProgramming 中的一个令人困惑的案例

ruby-on-rails - Ruby on Rails 解决方案的 LAMP 等效术语

arrays - 在 Ruby 中,如何在给定要分解字符串的索引数组的情况下分解字符串?