Я хочу рассчитать время, которое имеет зарегистрированный клиент, если у клиента меньше 3 месяцев с даты регистрации, клиент все еще активен, если у клиента более 3 месяцев и менее 12 месяцев полуактивен, буду ли я Я объясняю?, Я попробовал некоторые идеи, однако, они не являются непогрешимыми, например:
<% if time_ago_in_words(customer.date_of_issue) == "3 meses" %>
<span class="badge badge-pill badge-success">Activo</span>
<% elsif customer.date_of_issue == "3 meses" && time_ago_in_words(customer.date_of_issue) < "6 meses" %>
<span class="badge badge-pill badge-warning">Semi Activo</span>
<% else time_ago_in_words(customer.date_of_issue) > "6 meses" %>
<span class="badge badge-pill badge-danger">Inactivo</span>
<% end %>
Однако это не является необходимым, так как вы не можете сравнивать месяцы или дни, потому что это текстовая строка, потому что Я только читаю номера цепочки, я знаю, что есть более правильный способ сделать это, что-то похожее на:
<% if customer.date_of_issue == Date.new..3.months.ago %>Active<% else %>Older<%end %>
Однако я не могу заставить его работать правильно, я ценю всю вашу помощь
Не необходимо, чтобы ты конвертировал в текст, ты можешь использовать comparadores из объекта Time
:
[7] pry(main)> date_of_issue = 3.months.ago
=> Mon, 26 Aug 2019 21:37:14 UTC +00:00
[8] pry(main)> date_to_compare = date_of_issue - 1.minute
=> Mon, 26 Aug 2019 21:36:14 UTC +00:00
[9] pry(main)> date_of_issue > date_to_compare
=> true
[11] pry(main)> date_of_issue > date_to_compare + 1.minute
=> false
Это, примененное к твоей проблеме, должно бы быть чем-то как:
<% if customer.date_of_issue > 3.months.ago %>
<span class="badge badge-pill badge-success">Activo</span>
<% elsif customer.date_of_issue > 6.months.ago
# O 1.year.ago, no lo tengo claro, ya que veo 2 definiciones distintas
# en tu pregunta
%>
<span class="badge badge-pill badge-warning">Semi Activo</span>
<% else %>
<span class="badge badge-pill badge-danger">Inactivo</span>
<% end %>