首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ActiveRecord:Base

ActiveRecord:Base
EN

Stack Overflow用户
提问于 2022-08-09 01:47:30
回答 2查看 66关注 0票数 0

有人能向我解释一下ActiveRecord::Base.connection(某些表)和ActiveRecord::Base.connecton.execute(某些表)之间的区别吗?谢谢!

EN

回答 2

Stack Overflow用户

发布于 2022-08-09 06:03:06

您的问题有点不清楚,因为这两种方法都不希望使用table_name作为参数。

但是通常情况下,ActiveRecord::Base.connection返回ActiveRecord::Base类的当前数据库连接,该连接可用于运行低级数据库查询。而您的第二个示例ActiveRecord::Base.connecton.execute(sql_query)使用了连接,实际上对数据库执行了一个SQL查询。

来自ActiveRecord::ConnectionHandling#connection的文档

connection() 返回当前与类关联的连接。这也可以用来“借用”连接来做与任何特定活动记录无关的数据库工作。

来自ActiveRecord::ConnectionAdapters::DatabaseStatements#execute的文档

execute(sql, name = nil) 在此连接的上下文中执行SQL语句,并从连接适配器返回原始结果。注意:根据数据库连接器的不同,此方法返回的结果可能是手动管理内存。考虑使用exec_query包装器。

票数 2
EN

Stack Overflow用户

发布于 2022-08-09 05:17:02

ActiveRecord::Base.connection方法不接受任何参数,并返回当前关联类的连接。

代码语言:javascript
复制
# File activerecord/lib/active_record/connection_adapters/abstract/connection_specification.rb, line 90
    def connection
      self.class.connection
    end

ActiveRecord::Base.connection.execute获取原始SQL并在当前为模型建立的连接上执行。

有关更多细节,请参阅

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73285709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档