我有一个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中都应该可以正常工作。