Service 相對於來說是最單純的,主要目的在做一件事情。舉例來說,我的網站可能有跨時區的問題,常常需要換算 time zone 與其他時區之間的計算,所以會需要知道其他時區目前的時間,就以 us_east_time
來舉例:
app/services
folderapp > 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
# frozen_string_literal: true
<%= UsEastTime.current =>
這樣子的寫法,就不會把需要用到 us_east_time
的邏輯散落在各地或者重複寫好幾遍,相對於來說也很好理解。
註: 簡單也好理解龍哥的書 - Rails 程式碼整理術(進階)