sql >> Databasteknik >  >> RDS >> Mysql

Gör en engångsfråga till en annan databas och tabell

Förutsatt att den är tillgänglig med samma databasuppgifter och på samma MySQL-server, skulle det enklaste sättet vara att köra en fråga som anger databasen och tabellen i FROM satsen i frågan, som sådan:

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

select_one returnerar en hash av kolumner till värden. För mer information om metoder som du kan använda på connection objekt, se denna dokumentation .

Det andra alternativet är att skapa en underklass av ActiveRecord och anropa establish_connection :

class Blog < ActiveRecord::Base
  establish_connection :blog

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

Du måste också skapa en blog databaspost i din database.yml fil. Se establish_connection för mer information, även om det tyvärr bara är känt att använda det på detta sätt genom att titta på källkoden för establish_connection .

Sedan kan du använda bloggdatabasanslutningen i frågor, som så:

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

Det som är bra med att göra det på det här sättet är att du nu har ett bra ställe att definiera en metod (i Blog-klassen, som en klassmetod) för att hämta data, som jag har gjort ovan.

Båda dessa strategier borde fungera bra med Rails 2.x eller 3.x.




  1. Returnera endast rader vars maxvärde är mindre än vad som anges

  2. Hur man kör lagrade procedurer med Doctrine2 och MySQL

  3. Konvertera text till nummer i MySQL-fråga

  4. Använder grupp av kolumner som en unik nyckel i MySQL