冒险村25 - Design Pattern(5) - Service Object

25 - Design Pattern(5) - Service Object

Service 相对於来说是最单纯的,主要目的在做一件事情。举例来说,我的网站可能有跨时区的问题,常常需要换算 time zone 与其他时区之间的计算,所以会需要知道其他时区目前的时间,就以 us_east_time 来举例:

Create app/services folder

  • us_east_time.rb

Add app > services > us_east_time.rb

  # frozen_string_literal: true
  class UsEastTime
    TIME_ZONE = "America/New_York".freeze

    class << self
      def current
        ActiveSupport::TimeZone.new(TIME_ZONE).now
      end

      def current_date
        current.strftime("%Y%m%d")
      end

      def current_year
        current.year
      end
    end

    # ...
  end

View

  # frozen_string_literal: true
  <%= UsEastTime.current =>

这样子的写法,就不会把需要用到 us_east_time 的逻辑散落在各地或者重复写好几遍,相对於来说也很好理解。

注: 简单也好理解龙哥的书 - Rails 程序码整理术(进阶)


<<:  D25 - 彭彭的课程# Python 类别的定义与使用

>>:  数据分析的好夥伴 - Python基础:档案读写

2022新年挑战 - 7 days for Javascript(Day 1 - Developer Set Up)

因为在工作上, 基本上碰不到Javascript, 感觉再不复习一下, 就要忘光光了 (汗) 所以决...

活动分享|高品质数据用Tableau活起来!

2021年很快已经倒数2个月了 这一年变动很大很快 不管是你所属的企业还是我任职的企业,很明显的,在...

Day29 - 总结推荐逆向资源

WannaCry 还没逆完,把最後一天的内容拿出来挡一下。请读者见谅XD 今天不会讲解技术,会推荐基...

Day 4 - 透过 RKE 架设第一套 Rancher(上)

本文将於赛後同步刊登於笔者部落格 有兴趣学习更多 Kubernetes/DevOps/Linux 相...

Day27 - HTML 与 CSS (9) - head

<head> <head>:只有 1 个,主要说明一些资讯,如编码、标题,使...