Сделайте одноразовый запрос к другой базе данных и таблице - PullRequest
6 голосов
/ 18 октября 2010

У меня есть приложение rails с сайтом WordPress, посвященным блогу (полностью отдельно в /blog).

Клиент хочет получить последнюю запись в блоге на главной домашней странице приложения rails, поэтому мне нужно выполнить однократный запрос mysql к базе данных word-press. Как бы я сделал это в приложении рельсы. Слово-пресс полностью отделено от рельсов с точки зрения базы данных.

Приветствие.

1 Ответ

9 голосов
/ 18 октября 2010

Предполагая, что он доступен с использованием тех же учетных данных базы данных и на том же сервере MySQL, самый простой способ - выполнить запрос, указав базу данных и таблицу в предложении FROM запроса, например:

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

select_one вернет хэш столбцов значений.Для получения дополнительной информации о методах, которые вы можете использовать для объекта connection, см. эту документацию .

Второй вариант - создать подкласс ActiveRecord и вызвать establish_connection:

class Blog < ActiveRecord::Base
  establish_connection :blog

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

Вам также нужно будет сделать запись базы данных blog в файле database.yml.См. Estab_connection для получения более подробной информации, хотя, к сожалению, использование его таким способом действительно известно только по исходному коду для establish_connection.

Затем вы можете использовать соединение с базой данных блога в запросах.Примерно так:

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

Что приятно делать таким образом, теперь у вас есть хорошее место для определения метода (в классе Blog, как метод класса) для извлечения данных, так как ясделали выше.

Обе эти стратегии должны хорошо работать с Rails 2.x или 3.x.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...