我有一个带有wordpress博客的rails应用程序(在/ blog上完全分开)。
客户想要访问rails app主要主页上的最新博客帖子,所以我需要对word-press数据库进行一次性的mysql查询。我将如何在rails应用程序中执行此操作。在数据库方面,word-press完全来自rails。
干杯。
答案 0 :(得分:9)
假设可以使用相同的数据库凭据并在同一个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.connection.select_one("SELECT * FROM posts ...")
这样做有什么好处现在你有一个很好的地方来定义一个方法(在Blog类中,作为类方法)来获取数据,就像我上面所做的那样。
这两种策略都适用于Rails 2.x或3.x。