Mysql
 sql >> Database >  >> RDS >> Mysql

Effettua una query una tantum su un database e una tabella diversi

Supponendo che sia accessibile utilizzando le stesse credenziali del database e sullo stesso server MySQL, il modo più semplice sarebbe eseguire una query specificando il database e la tabella nel FROM clausola della query, in quanto tale:

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

select_one restituirà un hash di colonne ai valori. Per ulteriori informazioni sui metodi che puoi utilizzare sulla connection oggetto, vedere questa documentazione .

La seconda opzione è creare una sottoclasse di ActiveRecord e chiamare establish_connection :

class Blog < ActiveRecord::Base
  establish_connection :blog

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

Dovrai anche creare un blog voce del database nel tuo database.yml file. Vedi stabilire_connessione per maggiori dettagli, anche se sfortunatamente usarlo in questo modo è davvero noto solo guardando il codice sorgente di establish_connection .

Quindi puoi utilizzare la connessione al database del blog nelle query, in questo modo:

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

La cosa bella di farlo in questo modo è ora che hai un bel posto per definire un metodo (nella classe Blog, come metodo di classe) per recuperare i dati, come ho fatto sopra.

Entrambe queste strategie dovrebbero funzionare bene con Rails 2.xo 3.x.