mysql - 在 activerecord 中可能使用连接将两个 SQL 查询减少为一个

标签 mysql sql ruby-on-rails activerecord rails-activerecord

两个模型 User 和 Article 的关系如下:

  • 用户有一个篇文章

  • 文章属于用户

-用户有一个名为“状态”的字段

-文章有一个名为“thing_i_need”的字段

class User < ActiveRecord::Base
  has_one :article, foreign_key: request_id
  # status :integer
end

class Article < ActiveRecord::Base
  belongs_to :user, foreign_key: request_id
  # thing_i_need :string
end

查询:User.where(status: 'xyz').last.article.thing_i_need

目前,会触发两个查询来获取“thing_i_need”

有什么方法可以在一次查询中完成吗?

是否this帮助?

最佳答案

你可以试试这个

User.joins(:article).where(status: 'xyz').pluck('articles.thing_i_need').last

我建议阅读 select & pluck来自文档的查询方法,早些时候我尝试用 select 代替 pluck 但它没有用。

关于mysql - 在 activerecord 中可能使用连接将两个 SQL 查询减少为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34282280/

相关文章:

sql - SQL中如何选择表的最后一条记录?

ruby-on-rails - 如何在 rails (4.1.5) 中创建装置(对于设计用户)作为 yml.erb?

ruby-on-rails - 自定义中间件 block 引发异常的回溯

支持 Memcache 的 MySQL 集群

mysql - MYSQL中如何获取连续的两行

php - 显示名称而不是来自不同表的 ID

java - 列表中的 CSV 或 JSON 文件

ruby-on-rails - 使用 post 参数重定向到支付 URL

mysql - 使用 Access 构建 MySQL 查询

javascript - 基于分层(父子)数据的数据驱动面包屑