从数组中选择活动记录对象

时间:2014-08-17 13:38:44

标签: ruby-on-rails ruby arrays

我正在做一些活动的记录查询,然后将它们附加到之前创建的数组中。我想要做的是从上个月创建的数组中选择一个。不知道你是怎么做的,因为你再也不能再做一个活动的记录阵列了。

e.g。 (简单示例贝娄**我无法在实际代码中组合查询)

results = []
results += Post.where(:category_id => 1)
results += Post.where(:user_id => 1)
results += Post.where(:user_id => 4)

现在我想摆脱上个月创建的结果数组

3 个答案:

答案 0 :(得分:4)

只需使用ruby Enumerable#select

 results.select { |post| post.created_at >= 1.month.ago }

答案 1 :(得分:1)

与其他答案略有不同的方法

results = []

posts = Post.where('created_at >= ?', Time.now - 1.month)
results << posts.where(category_id: 1)
results << posts.where(user_id: 1)
results << posts.where(user_id: 4)

如果你在数组中有user_id,你也可以这样做

user_ids = [1,4]
results << posts.where(user_id: user_ids)

答案 2 :(得分:0)

看起来您正在将对象放入数组中,在这种情况下,您仍然可以在这些对象上使用created_at等属性。 created_at >= 1.month.ago应该作为查询中的参数。取决于你的链接方式:

Post.where("created_at >= ?", 1.month.ago)results_array.select { |post| post.created_at >= 1.month.ago }