2016-04-18 3 views
0

Je veux définir le fuseau horaire pour chaque demande que mon application recevoir, avec un application_controller.rb Je l'ai fait:Quel est le meilleur moyen d'émuler `around_filter` lorsque vous utilisez Grape?

around_filter :user_time_zone, :if => :current_user 

def user_time_zone(&block) 
    Time.use_zone(current_user.time_zone, &block) 
end 

Mais je rencontre difficile de trouver un équivalent que les suites de ma demande actuelle qui utilise la pierre précieuse Grape.

La seule chose que j'ai trouvé semble être this:

use Grape::Middleware::Filter, before: lambda { Time.zone current_user.time_zone }, after: lambda { Time.zone 'UTC' } 

mais je voudrais savoir s'il y a quelque chose plus propre

Répondre

0

Vous pouvez mettre ce comportement commun dans un module.

Voilà comment je l'ai fait quelque chose de similaire:

module API 
    module V1 
    module Defaults 
     extend ActiveSupport::Concern 

     included do 
     helpers do 
      def current_user 
      # ... 
      end 
     end 

     before do 
      Time.zone = current_user.timezone 
     end 

     after do 
      Time.zone = Rails.configuration.time_zone 
     end 
     end 
    end 
    end 
end 

module API 
    module V1 
    class Things < Grape::API 

     include API::V1::Defaults 

    end 
    end 
end