Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Führen Sie eine einmalige Abfrage an eine andere Datenbank und Tabelle durch

Angenommen, es ist mit denselben Datenbankanmeldeinformationen und auf demselben MySQL-Server zugänglich, wäre der einfachste Weg, eine Abfrage auszuführen, die die Datenbank und die Tabelle im FROM angibt Klausel der Abfrage, als solche:

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

select_one gibt einen Hash von Spalten zu Werten zurück. Weitere Informationen zu Methoden, die Sie auf der connection verwenden können -Objekt finden Sie in dieser Dokumentation .

Die zweite Option besteht darin, eine Unterklasse von ActiveRecord zu erstellen und establish_connection aufzurufen :

class Blog < ActiveRecord::Base
  establish_connection :blog

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

Sie müssen auch einen blog erstellen Datenbankeintrag in Ihrer database.yml Datei. Siehe Verbindung herstellen für weitere Details, obwohl die Verwendung auf diese Weise leider nur durch einen Blick auf den Quellcode für establish_connection bekannt ist .

Dann können Sie die Blog-Datenbankverbindung wie folgt in Abfragen verwenden:

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

Das Schöne an dieser Vorgehensweise ist, dass Sie jetzt einen schönen Ort haben, um eine Methode (in der Blog-Klasse als Klassenmethode) zu definieren, um die Daten abzurufen, wie ich es oben getan habe.

Beide Strategien sollten mit Rails 2.x oder 3.x gut funktionieren.