在最近状态24小时后,创建新状态

时间:2013-11-08 17:14:46

标签: ruby-on-rails ruby-on-rails-3

Rails 3.2 Twitter App。

解决方案:道具纠正答案。我有时会忽略简单的东西。结束了我的巨大观点。这对我来说更容易。看起来像这样。

<% @ribbits.each do |ribbit| %>

<% if ribbit.user != current_user%>

<% if ribbit.user.following? current_user %>

<% if ribbit.created_at > (Time.now - 1.day) %>

etc.

我有一个我想弄清楚的最后一个功能。如果用户的最新状态是在24小时前创建的,我想为他们创建一个新的“yadayadayada”状态。

以下是最近状态的显示方式。

users_controller.rb

def buddies
 @ribbits = Ribbit.where("(ribbits.user_id, ribbits.created_at) IN (SELECT user_id, MAX(created_at) FROM ribbits WHERE user_id IN (?) GROUP BY user_id ORDER BY MAX(created_at) DESC LIMIT 10)", buddies_ids).order("created_at DESC")

/users/buddies.html.erb

<% @ribbits.each do |ribbit| %> ... etc

这样的事情可能是我的users_controller.rbribbits_controller.rb

if @ribbits.user.ribbit created_at > (Time.now - 1.day)
  Ribbit.new(:status => "sdfaklsdf")
end

Ribbits是推特。

2 个答案:

答案 0 :(得分:2)

我认为你所看到的是一个调度程序。您可以使用Delayed JobSidekiq。 Sidekiq让你创建jobs at a specific time

答案 1 :(得分:2)

如果您在数据库中不需要此“默认”状态,则可以将逻辑推送到用户模型中。

类似的东西:

class User < ActiveRecord::Base

  def current_ribbit
    if ribbit created_at > (Time.now - 1.day)
      default_ribbit
    else
      ribbit
    end
  end

  def self.default_ribbit
    Ribbit.new(:status => "sdfaklsdf")
  end

end