前回までに「ポイントシステム」の実装が進みましたが、Customer.authenticate メソッドが肥大化してきました。今後の開発のことを考えて、今回はリファクタリングによるソースコードの整理整頓を行います。 サービスオブジェクト 現在の Customer.authenticate メソッドのコードは次の通りです: def authenticate(username, password) customer = find_by_username(username) if customer.try(:password_digest) && BCrypt::Password.new(customer.password_digest) == password Time.zone = 'Tokyo' now = Time.current if now.hour < 5 time0 = now.