【Rails】 통지 시간을 「○일 전」 「○분 전」과 같이 표시하는 편리한 메소드를 발견했다

4625 단어 datetime루비Rails

알림 기능을 만들었지만 ...



Rails에서 Qiita와 같은 앱을 만들어 알림 기능을 만들었습니다.
덧붙여서 참고로 한 기사는 이쪽. 굉장히 알기 쉽다.
h tps : // / ls-s 쇼오 l. 네 t / 라이 ls - 치후 카치온 /

다만, 아무것도 하지 않으면,



이런 느낌이 되어 버린다. 뭐라고 할까, 확실히 오지 않는다!
이것은 Notification 모델의 created_at 를 열거하고 있을 뿐이므로, 기계적으로 시간을 열거하고 있다.

좋은 느낌의 「○일전」 「○분전」을 검토했다.



더 알림 싶어!



거기서, 트위터의 통지같은 느낌의 「○일전」 「○분전」을 검토했다.


조건
표시 예


60분 이내
"10분 전"

24시간 이내
"5시간 전"

30일 이내
"14일 전"

그 이전
created_at 그대로


이것이라면 좋은 느낌에 통지 같아지는 것이 아닐까!
이런 느낌의 시간 표시를 해주는 메소드나 gem을 찾았지만 특별히 발견되지 않았기 때문에 스스로 만들기로 했다.

그것이 여기

notification.rb
def how_long_ago
  if (Time.now - self.created_at) <= 60 * 60
    # 60分以内なら
    ((Time.now - self.created_at) / 60).to_i.to_s + "分前"
  elsif (Time.now - self.created_at) <= 60 * 60 * 24
    # 24時間以内なら
    ((Time.now - self.created_at) / 3600).to_i.to_s + "時間前"
  elsif (Date.today - self.created_at.to_date) <= 30
    # 30日以内なら
    (Date.today - self.created_at.to_date).to_i.to_s + "日前"
  else
    # それ以降
    self.created_at
  end
end

주의해야 할 곳은 두
・도중까지는 DateTime형에서의 뺄셈이 되지만, 도중부터는 to_date 메소드를 사용해 Date형으로 변환하지 않으면 「○일전」이 실제의 일자와 어긋나 버린다
· 빼기 결과를 to_i로 정수로 변환하고 to_s로 문자열로 변환하여 문자열을 연결합니다.

 결과


notification.created_atnotification.how_long_ago 로 바꾸면,



좋은 느낌에 통지 같아졌다!

추가


time_ago_in_words 라는 완벽한 방법이 있었습니다…

좋은 웹페이지 즐겨찾기