我正在遍历这样的记录数组:
@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,并将所有产品标记为新产品。
知道为什么会发生这种情况以及如何解决此问题吗?
答案 0 :(得分:1)
您的逻辑不正确-此行:
if product.created_at <= product.created_at + 2.days
将始终为真(您正在将日期与其自身进行比较),因此所有内容都将始终标记为新产品。
您是要比较created_at日期与当前日期吗?如果要检查是否在不到两天前创建的产品,请使用product.created_at >= 2.days.ago
。