合并activerecord模型对象,只保留一个created_at列



我试图做一个activerecord合并两个activerecord::关系对象,但保持一个特定的created_at列。下面是查询:

Subscriber.joins(:subscriptions).merge(subscriptions)

其中订阅是另一个activerecord关系。我想从订阅关系中使用created_at列,但activerecord默认情况下从订阅服务器中获取created_at列。

编辑

正在合并的订阅是这个方法(它返回一个activerecord::relation)

def subscriptions
  @subscriptions ||= begin
    s = CampaignSubscription.where(:campaign_id => campaign.id).order(order_clause)
    s = s.where(:status => status)
    s = s.where(:email => email) if email.present?
    s = s.where("email ILIKE ?", "%#{q}%") if q.present?
    s
  end
end

这可能有点矫枉过正,但应该可以工作。我还没有测试过它必须应用联合,但它适用于集合。

Subscriber.all.select((Subscriber.column_names - ['created_at']).join(', ')).joins(:subscriptions).merge(subscriptions)

相关内容

  • 没有找到相关文章