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模型中)如何通过关系获得没有报告的旅行列表
这似乎应该是直截了当的,但我感觉它可能不是。
scope :need_report, -> { where(joins(:report)) }
会让我得到有报告的旅行,但我正试图回到相反的地方。
不确定我是否应该:
答案 0 :(得分:3)
你可以这样做(返回一个数组):
scope :no_report, -> { select { |trip| trip.report.blank? } }
也可以获得ActiveRecord::Relation
:
scope :no_report, -> { includes(:report).where(report: { id: nil })