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

标签 mysql ruby-on-rails wordpress activerecord

我有一个 Rails 应用程序,旁边有一个 wordpress 博客(完全独立于/blog)。

客户想要 Rails 应用主页上的最新博客文章,因此我需要对 word-press 数据库执行一次性 mysql 查询。我将如何在 Rails 应用程序中执行此操作。 word-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

您还需要在database.yml 文件中创建一个blog 数据库条目。参见 establish_connection了解更多详细信息,尽管不幸的是,实际上只有通过查看 establish_connection 的源代码才能知道以这种方式使用它。

然后你可以在查询中使用博客数据库连接,像这样:

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

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

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

关于mysql - 对不同的数据库和表进行一次性查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3958402/

相关文章:

Mysql - 索引性能

php - 如果行不存在则先更新然后插入(SQL)而不是先检查行是否存在?

javascript - 在 getJSON jquery 中传递输入值

ruby-on-rails - 按关联计数订购产品

php - 将 WP 摘录限制为第二句

mysql - 本地和Cloud DB 2种方式复制

ruby-on-rails - 在 Ruby/Rails 中接收邮件

ruby-on-rails - 通过 Capistrano 部署应用程序失败,LoadError : cannot load such file -- nokogiri

javascript - 预填充字段 - WordPress 平台上的 Freshdesk

wordpress - 禁用我网站上的所有 HTTPS 页面