sql >> Base de Datos >  >> RDS >> Mysql

Realice una consulta única a una base de datos y una tabla diferentes

Suponiendo que se pueda acceder a ella con las mismas credenciales de la base de datos y en el mismo servidor MySQL, la forma más sencilla sería ejecutar una consulta especificando la base de datos y la tabla en el FROM cláusula de la consulta, como tal:

ActiveRecord::Base.connection.select_one(
    "SELECT * FROM blog_database.posts ORDER BY created_at DESC LIMIT 1")

select_one devolverá un hash de columnas a valores. Para obtener más información sobre los métodos que puede utilizar en la connection objeto, consulte esta documentación .

La segunda opción es crear una subclase de ActiveRecord y llamar a establish_connection :

class Blog < ActiveRecord::Base
  establish_connection :blog

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

También deberá crear un blog entrada de la base de datos en su database.yml expediente. Consulte establecer_conexión para obtener más detalles, aunque desafortunadamente usarlo de esta manera solo se conoce al mirar el código fuente de establish_connection .

Luego puede usar la conexión de la base de datos del blog en las consultas, así:

Blog.connection.select_one("SELECT * FROM posts ...")

Lo bueno de hacerlo de esta manera es que ahora tiene un buen lugar para definir un método (en la clase Blog, como un método de clase) para obtener los datos, como lo hice anteriormente.

Ambas estrategias deberían funcionar bien con Rails 2.xo 3.x.