2010-10-18 12 views
6

Mam aplikację szyny z blogiem wordpress sprzedawanym na boku (całkowicie osobno na/blogu).Jednorazowe zapytanie do innej bazy danych i tabeli

Klient chce do najnowszego posta na blogu na głównej stronie głównej aplikacji szyny, więc muszę zrobić jednorazowe zapytanie mysql do bazy danych word-press. Jak mam to zrobić w aplikacji rails. Słowo-prasa jest całkowicie spartaczona z szyn w zakresie bazy danych.

Pozdrawiam.

Odpowiedz

9

Zakładając, że jest ona dostępna przy użyciu tych samych poświadczeń baz danych i na tym samym serwerze MySQL, najprostszym sposobem byłoby uruchomić zapytanie określające bazy danych i tabeli w klauzuli zapytania FROM, jako takich:

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

select_one zwróci wartość mieszającą kolumn do wartości. Aby uzyskać więcej informacji na temat metod, których można użyć na obiekcie connection, zobacz this documentation.

Drugą opcją jest utworzyć podklasę ActiveRecord i nazywają establish_connection:

class Blog < ActiveRecord::Base 
    establish_connection :blog 

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

Należy również dokonać wpisu blog bazy danych w pliku database.yml. Więcej szczegółów można znaleźć pod numerem establish_connection, ale niestety używanie go w ten sposób jest znane tylko z kodu źródłowego dla establish_connection.

Następnie można użyć połączenia z bazą danych blogu w zapytaniach tak:

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

Co jest ładne o to zrobić w ten sposób jest teraz masz ładne miejsce, aby określić sposób (w klasie Blog, jako metoda klasy) do pobierania danych, tak jak to zrobiłem powyżej.

Obie te strategie powinny działać poprawnie z Railsami 2.x lub 3.x.

Powiązane problemy