2017-04-06 82 views
0

Trip.rb其中HAS_ONE关系没有关系

class Trip < ActiveRecord::Base 
    has_one :report 
end 

Report.rb

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

旅行Rails的范围首先存在,然后需要的报告。当报告创建时,它会得到一个trip_id。关系工作在控制台Trip.report显示

我试图找出如何(想必在旅行模式),以获得旅行的名单不通过关系有报告显示正确的报告

这似乎应该是直截了当的,但我明白它可能不是。

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

会让我有报告的车次,但我试图返回相反。

不知道我是否应该:

  1. 回归的对面加入
  2. 鸟巢和更新REPORT_ID的行程莫名其妙,所以很容易调用

回答

2

你可以这样做这样(返回一个数组):

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

这也有可能得到一个ActiveRecord::Relation

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

即工作,但提供了作为阵列,打破示波器上的其他方法,即顺序,分页等。 –

+0

对不起,整天。出现我可以在调用no_report范围之前运行订单,分页等 –

+0

@RyanMcCrary修复了答案 –