날짜 개체와 함께 Ruby Range 사용
4291 단어 rubyrailstodayilearned
이러한 방식은 종종 읽기 어려운 메서드를 생성합니다.
class User
def paying_member?
subscription_started_at <= Date.current &&
(subscription_ended_at.nil? || subscription_ended_at > Date.current)
end
end
그러나 Ruby의 Range 클래스를 사용하여 코드의 가독성을 향상시키는 방법이 있습니다.
class User
def paying_member?
subscription_period.cover?(Date.current)
end
private
def subscription_period
subscription_started_at..subscription_ended_at
end
end
고객이 구독을 종료하지 않은 경우
subscription_period
는 술어의 유효성을 검사하는 무한 범위를 반환합니다.이제 비즈니스에서 저장된 종료 날짜 하루 전에 구독이 종료된다고 가정하고 상한을 제외하는 범위를 반환하도록
subscription_period
메서드를 수정하는 것은 매우 간단합니다.class User
# ...
def subscription_period
subscription_started_at...subscription_ended_at
end
end
Rails 애플리케이션에서는 ActiveSupport에 의해 Range 클래스에 추가된 메서드
Range#===
및 Range#overlaps?
를 활용할 수도 있습니다.class User
def subscriber_kind
case subscription_period
when innovator_period then 'Innovator'
when early_adopter_period then 'Early adopter'
when early_majority_period then 'Early majority'
when late_majority_period then 'Late majority'
when laggards_period then 'Laggard'
end
def share_subscription_with(user)
subscription_period.overlaps?(user.subscription_period)
end
end
연결
Reference
이 문제에 관하여(날짜 개체와 함께 Ruby Range 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/notgrm/use-ruby-range-with-date-objects-ehk텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)