如果声明基于时间前的话

时间:2014-01-27 16:59:12

标签: ruby-on-rails ruby

我正在尝试做一些我认为非常简单的事情,我可以让它在控制台中工作,但不能在我的控制器中正常工作。

在我的控制器的创建动作中,我有一个帖子到我的创建动作的facebook和twitter部分。我想要这个部分触发如果用户没有帖子或者如果最后一个帖子是在10分钟前创建的。

所以基本上,如果帖子是空白的,或者最后的帖子是> 10分钟前,发布到FB和Twitter。

这个if语句有什么问题?

if current_user.posts.blank? || current_user.posts.last.created_at < 10.minutes.ago
   do post stuff
end

现在,即使我以没有帖子的用户身份登录,也没有任何内容发布。

我可以在控制台中获得第二部分的真/假结果。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

问题是我的if条件是在帖子保存之后,所以即使它是用户的第一个帖子,当它到达我的if语句时,计数为1。谢谢@ rlecaro2。我将我的代码更改为此修复。

if current_user.posts.count - 1 == 0 || current_user.posts[-2].created_at < 20.minutes.ago

答案 1 :(得分:0)

迷你重构的解决方案:

# Caching
posts = current_user.posts

# Let's check
if posts.blank? || (!posts.blank? && posts.last.created_at < 10.minutes.ago)
  # do post stuff
end