Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Faça uma consulta única para um banco de dados e uma tabela diferentes


Supondo que seja acessível usando as mesmas credenciais de banco de dados e no mesmo servidor MySQL, a maneira mais fácil seria executar uma consulta especificando o banco de dados e a tabela no FROM cláusula da consulta, como tal:
ActiveRecord::Base.connection.select_one(
    "SELECT * FROM blog_database.posts ORDER BY created_at DESC LIMIT 1")

select_one retornará um hash de colunas para valores. Para obter mais informações sobre métodos que você pode usar na connection objeto, consulte esta documentação .

A segunda opção é criar uma subclasse de ActiveRecord e chamar establish_connection :
class Blog < ActiveRecord::Base
  establish_connection :blog

  def self.most_recent_post
    connection.select_one("SELECT * FROM posts ...")
  end
end

Você também precisará criar um blog entrada de banco de dados em seu database.yml Arquivo. Consulte establish_connection para mais detalhes, embora, infelizmente, usá-lo dessa maneira seja realmente conhecido apenas olhando o código-fonte para establish_connection .

Então você pode usar a conexão de banco de dados do blog em consultas, assim:
Blog.connection.select_one("SELECT * FROM posts ...")

O legal de fazer isso dessa maneira é que agora você tem um bom lugar para definir um método (na classe Blog, como um método de classe) para buscar os dados, como fiz acima.

Ambas as estratégias devem funcionar bem com Rails 2.x ou 3.x.