我有一个模型Suggestion
,它有一些属性,包括moderated: boolean
和created_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 }
对于简单的查询来说,这似乎太过分了。如何简化此查询并获得相同的结果??
感谢。
答案 0 :(得分:3)
这不是你想要的吗?所有主持和所有非主持但超过4天的
Suggestion.where("moderated = ? or (created_at < ? and moderated = ?)", true, 4.days.ago, false).order("created_at")