从sql获取没有具有特定字段值的关联对象的对象

时间:2015-05-26 11:24:43

标签: ruby-on-rails ruby postgresql ruby-on-rails-4 squeel

我有工作和反馈模型。

他们是这样联系在一起的:

Job has_many :feedbacks Feedback belongs_to :job

我试图通过feedback.user_id == job.client_id

来查询没有反馈的工作

4 个答案:

答案 0 :(得分:1)

 jobs=Job.find(:all, :select => 'DISTINCT id', :order=>"id asc").map { |n| n.id.to_s })
 feedbacks=Feedback.find(:all, :select => 'DISTINCT job_id', :order=>"job_id asc").map { |n| n.job_id.to_s })
 jobs_without_feedbacks=jobs-feedbacks

确定。然后尝试这个。在你的情况下它可能会很好。 jobs_without_feedbacks将是作业的ID数组,没有任何反馈。

答案 1 :(得分:0)

jobs=Job.all
no_feedback_jobs=Array.new
jobs.each do |job|{ (no_feedback_jobs<< job) if !job.feedback}

试试这个。它会正常工作

答案 2 :(得分:0)

feedbacks = Feedback.map(&:user_id).uniq

User.includes(:jobs => :feedbacks).where.not(:client_id => feedbacks).where(:id => current_user.id)

试试这个

答案 3 :(得分:0)

这使用了两个查询,但pluck应该相对较轻。

Job.includes(:feedbacks)
  .where(feedbacks: {id: nil})
  .where.not(client_id: Feedback.pluck(:user_id))