Сообщать только первое событие модели для каждого элемента - модель / представление Rails - PullRequest
0 голосов
/ 29 ноября 2018

Я работаю над проблемой, когда продукт имеет_предоставление_продукта.Я пытаюсь сообщить историю продукта, один из аспектов которого заключается в получении первого выбора каждого продукта в моем массиве, чтобы определить, как долго этот продукт находился в обращении.

В моем выборе 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] для модели продукта, и он отображал повторное значение для каждого элемента в списке продуктов.Как мне это исправить?

1 Ответ

0 голосов
/ 29 ноября 2018
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, чтобы не запрашивать каждый из них.время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...