繁体   English   中英

has_one关系没有关系的Rails范围

[英]Rails scope where has_one relation has no relation

Trip.rb

class Trip < ActiveRecord::Base
  has_one :report
end

Report.rb

class Report < ActiveRecord::Base
  belongs_to :trip
  belongs_to :user
end

旅行首先存在,然后需要报告。 创建报告后,它会得到一个trip_id。 该关系的工作方式是控制台Trip.report显示正确的报告

我试图弄清楚如何(大概在Trip模型中)通过关系获取没有报表的Trip列表

这似乎应该很简单,但是我感觉可能并非如此。

scope :need_report, -> { where(joins(:report)) }

会让我得到有报告的旅行,但是我正试图相反。

不知道我是否应该:

  1. 返回联接的对面
  2. 嵌套并以某种方式将report_id更新为该行程,因此调用起来很容易

您可以通过以下方式进行操作(返回数组):

scope :no_report, -> { select { |trip| trip.report.blank? } }

也可以获取ActiveRecord::Relation

scope :no_report, -> { includes(:report).where(report: { id: nil })

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM