Как сравнить время записи в Ruby On Rails

Я хочу рассчитать время, которое имеет зарегистрированный клиент, если у клиента меньше 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 %>

Однако я не могу заставить его работать правильно, я ценю всю вашу помощь

1
задан 26.11.2019, 23:10
1 ответ

Не необходимо, чтобы ты конвертировал в текст, ты можешь использовать 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 %>
1
ответ дан 01.12.2019, 10:47
  • 1
    Как сравнивание, если у даты реестра есть менее 3 месяцев Alter, я делаю следующее, но оно не функционирует: ´ customer.date_of_issue < 3.months.ago´ – Hector Hernandez 27.11.2019, 02:10
  • 2
    @HectorHernandez дело в том, что он мне кажется, что comparació n está s делая revé в. Проверь мой ú ltima actualizació n ответа – Alter Lagos 27.11.2019, 03:15
  • 3
    Превосходный Alter! Очень хорошо объясненный =D То, что последовало за тем, что ago я был смущенным, из-за которого он сравнивал наоборот, использовал несовершеннолетний, что (<), когда, если ты начинаешь взвешивать ago, вложи это, в этом случае он был бы большим (>) – Hector Hernandez 27.11.2019, 05:00