我有一个rails应用程序,旁边有一个wordpress博客sellotaped(完全独立于/blog)。
客户端想要的是rails应用程序主页上的最新博客文章,所以我需要对word press数据库进行一次性mysql查询。我该如何在rails应用程序中进行这项工作呢?就数据库而言,press这个词完全来自rails。
干杯。

最佳答案

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

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

select_one将把列的哈希值返回给值。有关可以在connection对象上使用的方法的详细信息,请参见this documentation
第二个选项是创建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数据库条目。有关更多详细信息,请参见establish_connection,尽管不幸的是,只有通过查看establish_connection的源代码,才能真正知道如何使用它。
然后可以在查询中使用blog数据库连接,如下所示:
Blog.connection.select_one("SELECT * FROM posts ...")

这样做的好处是现在有了一个很好的地方来定义一个方法(在blog类中,作为一个类方法)来获取数据,正如我在上面所做的那样。
这两种策略在rails 2.x或3.x中都应该可以正常工作。

08-17 19:41
查看更多