ActiveRecord查询获取x结果和y结果

时间:2014-07-08 19:37:21

标签: sql ruby-on-rails activerecord ruby-on-rails-4

我有一个模型Suggestion,它有一些属性,包括moderated: booleancreated_at: datetime。我正在尝试运行查询,其中两者 Suggestions已审核 Suggestions 已经过审核但是在4天前创建。

我知道我可以运行一个更简单的查询,但无法弄清楚所以只需将它们放在一起。我意识到这个解决方案是错误的,并没有遵守KISS,我试图这样做。

all_suggestions       = Suggestion.all

moderated_suggestions = all_suggestions.where(moderated: true)
older_suggestions     = all_suggestions.where('created_at < ?', 4.days.ago)

然后我转换为数组并连接两个数组,然后我排序。像这样:

concatenated_arrays = moderated_suggestions.to_a.concat older_suggestions.to_a
concatenated_arrays.sort! { |t1, t2| t2.created_at <=> t1.created_at }

对于简单的查询来说,这似乎太过分了。如何简化此查询并获得相同的结果??

感谢。

1 个答案:

答案 0 :(得分:3)

这不是你想要的吗?所有主持和所有非主持但超过4天的

Suggestion.where("moderated = ? or (created_at < ? and moderated = ?)", true, 4.days.ago, false).order("created_at")