因为我在我的应用程序中更改内容所以经常我决定使用ActiveRecord::Base.connection
来查询我的数据库,这很方便,因为我不需要添加关系,也因为查询更快更容易写。
但是使用正确的方法是什么:
ActiveRecord::Base.connection.select_all
ActiveRecord::Base.connection.execute
and other methods.
作为一个例子:我如何查询我的users
表。
ActiveRecord::Base.connection.select_all("SELECT * FROM users WHERE username = '#{username}'").rows
ActiveRecord::Base.connection.close()
使用上面的示例ActiveRecord::Base.connection.close()
知道要关闭的连接是什么? (在这种情况下,我想关闭select_all)
或者我应该使用? (如果我将所有数据转换为数组或json,则在任何模型上都有此查询将返回查询中的任何内容)
query = "SELECT * FROM users WHERE username = ?"
Model.find_by_sql([query, username])
答案 0 :(得分:1)
您可以更好地使用Connection Pool
spec1 = database_a
ActiveRecord::ConnectionPool.open(spec1) do |conn|
conn.select_all("SELECT * FROM users WHERE username = '#{username}'").rows
conn.close
end
spec2 = database_b
ActiveRecord::ConnectionPool.open(spec2) do |conn|
conn.select_all("SELECT * FROM users WHERE username = '#{username}'").rows
conn.close
end