[英]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)) }
会让我得到有报告的旅行,但是我正试图相反。
不知道我是否应该:
您可以通过以下方式进行操作(返回数组):
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.