@elibinary
2016-10-30T06:48:21.000000Z
字数 871
阅读 698
Rails
通过对 ActiveRecord::ConnectionHandling 的使用,可以获得很多连接 DB 的详细信息,更是可以灵活的进行各种数据库操作。
使用这个方法可以很简单的在代码里建立对数据库的连接,它接收一个 hash 参数。
这个方法十分有用,比如有时我们会有想要使用不同 DB 的时候,就可以使用这个方法灵活的建立对目标数据库的连接。
# 示例
ActiveRecord::Base.establish_connection(
adapter: "mysql2",
host: "localhost",
username: "myuser",
password: "mypass",
database: "somedatabase"
)
比如这样,还可以这样:
ActiveRecord::Base.establish_connection(:production)
Rails 会自动加载 config/database.yml 文件的配置信息到 ActiveRecord::Base.configurations ,我们可以直接引用已加载的配置信息,这样更加方便使用和管理。
可以通过 connected?() 方法来判断是否建立了数据库连接,还可以通过 connection_config() 方法来获得该链接的配置信息。还有 remove_connection() 和 retrieve_connection() 来手动控制连接的状态。
有时候我们可能想要不通过 ActiveRecord 来直接执行 SQL 语句进行数据库操作,这个时候就会用到这个方法了。这个方法接收一条 SQL 语句作为参数,执行并返回执行结果,它不会帮你为结果创建 record 实例。
results = ActiveRecord::Base.connection.execute("select * from table")
它返回的将是一个 hash 集合的数据。