[关闭]
@elibinary 2016-10-30T06:48:21.000000Z 字数 871 阅读 698

Talk About ConnectionHandling

Rails


通过对 ActiveRecord::ConnectionHandling 的使用,可以获得很多连接 DB 的详细信息,更是可以灵活的进行各种数据库操作。

establish_connection

使用这个方法可以很简单的在代码里建立对数据库的连接,它接收一个 hash 参数。
这个方法十分有用,比如有时我们会有想要使用不同 DB 的时候,就可以使用这个方法灵活的建立对目标数据库的连接。

  1. # 示例
  2. ActiveRecord::Base.establish_connection(
  3. adapter: "mysql2",
  4. host: "localhost",
  5. username: "myuser",
  6. password: "mypass",
  7. database: "somedatabase"
  8. )

比如这样,还可以这样:

  1. ActiveRecord::Base.establish_connection(:production)

Rails 会自动加载 config/database.yml 文件的配置信息到 ActiveRecord::Base.configurations ,我们可以直接引用已加载的配置信息,这样更加方便使用和管理。

methods

可以通过 connected?() 方法来判断是否建立了数据库连接,还可以通过 connection_config() 方法来获得该链接的配置信息。还有 remove_connection() 和 retrieve_connection() 来手动控制连接的状态。

ActiveRecord::Base.connection.execute()

有时候我们可能想要不通过 ActiveRecord 来直接执行 SQL 语句进行数据库操作,这个时候就会用到这个方法了。这个方法接收一条 SQL 语句作为参数,执行并返回执行结果,它不会帮你为结果创建 record 实例。

  1. results = ActiveRecord::Base.connection.execute("select * from table")

它返回的将是一个 hash 集合的数据。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注