2

Rails 3.2 推特应用程序。

解决方案:正确答案的道具。我有时会忽略简单的东西。最后在我的巨大视野中划了一条线。这对我来说更容易。看起来像这样。

<% @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.rb要么ribbits_controller.rb

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

Ribbits 是推文。

4

2 回答 2

2

我认为您正在寻找的是调度程序。您可以为此使用延迟作业Sidekiq。Sidekiq 让您在特定时间创建工作

于 2013-11-08T17:46:46.143 回答
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
于 2013-11-08T18:46:20.173 回答