Rails 5:遍历一系列记录并指示新记录

时间:2019-05-22 06:30:07

标签: ruby-on-rails

我正在遍历这样的记录数组:

@products = Product.where(category_id: @categories).order(updated_at: :desc)

<% @products.each do |product| %>
  <%= @product.title %>
  <%= @product.price%>
<% end %>

现在我想将最新记录标记为新版本:

<% @products.each do |product| %>
  <% if product.created_at <= product.created_at + 2.days %>
   New release
  <% end %>

  <%= @product.title %>
  <%= @product.price%>
<% end %>

但是,它并没有遍历每个产品并标记哪个是新产品(根据我拥有的if条件),而是仅获取第一条记录,该记录对if条件返回true,并将所有产品标记为新产品。

知道为什么会发生这种情况以及如何解决此问题吗?

1 个答案:

答案 0 :(得分:1)

您的逻辑不正确-此行:

if product.created_at <= product.created_at + 2.days

将始终为真(您正在将日期与其自身进行比较),因此所有内容都将始终标记为新产品。

您是要比较created_at日期与当前日期吗?如果要检查是否在不到两天前创建的产品,请使用product.created_at >= 2.days.ago