【问题标题】:Combine different queries with Active Record/Arel将不同的查询与 Active Record/Arel 结合
【发布时间】:2020-11-11 15:37:40
【问题描述】:

我有一个组合活动记录过滤器的有效解决方案,但我想知道是否可以只使用一个查询来提高性能。我尝试使用arel_tables,但尝试使用该方法组合多个查询没有成功。

我现在拥有的是这样的:

not_accepted_ids = User.where.not(status: ['accepted', 'rejected']).pluck(:id)

accepted_ids = User.where(status: 'accepted').order('updated_at DESC').limit(25).pluck(:id)

rejected_ids = User.where(status: 'rejected').order('updated_at DESC').limit(10).pluck(:id)

@users = User.where(id: not_accepted_ids + accepted_ids + rejected_ids)

提前感谢您的帮助

【问题讨论】:

    标签: ruby-on-rails rails-activerecord arel


    【解决方案1】:

    由于您添加了限制,因此您无法组合 where 语句。我从您的查询中得到的是您正在尝试加载 10 个接受的用户、25 个被拒绝的用户和所有其他用户。您可以加载所有用户,然后过滤它们。

    【讨论】:

    • 您可以使用联合,但这并没有带来太多好处。它仍然与以前大致相同,尽管它减少了两次数据库往返。
    猜你喜欢
    • 1970-01-01
    • 2011-10-15
    • 1970-01-01
    • 2013-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-27
    • 1970-01-01
    相关资源
    最近更新 更多