对不同的数据库和表进行一次性查询

Min*_*ure 6 mysql wordpress activerecord ruby-on-rails

我有一个带有wordpress博客的rails应用程序在侧面(完全单独在/ blog).

客户想要访问rails应用程序主主页上的最新博客帖子,所以我需要对word-press数据库进行一次性的mysql查询.我将如何在rails应用程序中执行此操作.在数据库方面,word-press完全从rails中获取.

干杯.

wup*_*tah 9

假设可以使用相同的数据库凭据并在同一MySQL服务器上访问它,最简单的方法是运行查询FROM,在查询子句中指定数据库和表,如下所示:

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

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
Run Code Online (Sandbox Code Playgroud)

您还需要blogdatabase.yml文件中创建一个数据库条目.有关更多详细信息,请参阅establish_connection,但遗憾的是,以这种方式使用它实际上只有通过查看源代码才能知道establish_connection.

然后,您可以在查询中使用博客数据库连接,如下所示:

Blog.connection.select_one("SELECT * FROM posts ...")
Run Code Online (Sandbox Code Playgroud)

这样做的好处是现在你有一个很好的地方来定义一个方法(在Blog类中,作为一个类方法)来获取数据,就像我上面所做的那样.

这两种策略都适用于Rails 2.x或3.x.