【问题标题】:Active record select query to where and joins query活动记录选择查询到哪里并加入查询
【发布时间】:2015-12-09 07:28:29
【问题描述】:

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

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

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

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_project 和一个failed_date 为零的出价。相反,我需要它返回所有出价,不包括存在failed_date 的出价。

【问题讨论】:

    标签: ruby-on-rails ruby activerecord


    【解决方案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 })
    

    【讨论】:

    • 谢谢,您的解决方案非常接近,做了一个小的修改。将标记为正确,因为它为我指明了正确的方向。
    猜你喜欢
    • 2017-10-22
    • 2013-11-23
    • 1970-01-01
    • 2012-08-01
    • 1970-01-01
    • 2014-02-14
    • 2014-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多