当产品具有多个产品选择时,我正在研究一个问题。我正在尝试报告产品的历史记录-其中一个方面包括第一次选择阵列中的每个产品,以确定该产品已经流通了多长时间。
在我的product_selection模型中:
belongs_to :product
def time_since_first_use
(Time.now - self[0].staged_at)
end
# staged_at is a datetime attribute
然后产品模型对此进行说明:
def tag_time_since_first_use
self.product_selections.time_since_first_use
end
然后尝试在视图中呈现它(简化了常规格式):
<% @products.order(created_at: :desc).each do |product| %>
<%= humanize_seconds(product.tag_time_since_first_use)%>
<%end%>
我最初在产品模型上选择了[0],它为产品列表中的每个项目都提供了一个重复的值。我该如何解决?
答案 0 :(得分:1)
class Product
def tag_time_since_first_use
Time.now - product_selections.order(staged_at: :asc).first.staged_at
end
end
如果您经常使用tag_time_since_first_use
,则在为产品创建第一个staged_at
时,最好将值保存在产品的product_selection
属性中避免每次查询。