活动记录选择查询到哪里和加入查询

时间:2015-12-09 07:28:30

标签: ruby-on-rails ruby activerecord

我目前在我的一个控制器中使用了以下Active Record .select查询:

@bids = current_user.bids.select { |bid| !bid.bid_has_failed_date }

以及我的bid_has_failed_date模型中Bid方法的条件:

def bid_has_failed_date
  self.real_property_sale.try(:real_property_sale_project).try(:failed_date).present?
end 

我更愿意使用.where.joins来做同样的事情。到目前为止,我已经得到了这个:

.where(agent_id: agent_id).joins(real_property_sale: :real_property_sale_project).where(real_property_sale_projects: { failed_date: nil })

这样做的问题是它只会返回real_property_sale_projectfailed_date为零的出价。相反,我需要它返回所有出价,不包括failed_date出现的出价。

1 个答案:

答案 0 :(得分:1)

where(agent_id: agent_id) - 
  where(agent_id: agent_id)
   .joins(real_property_sale: :real_property_sale_project)
    .where.not(real_property_sale_projects: { failed_date: nil })