我想为我的应用收到的每个请求设置时区,application_controller.rb
我这样做了:
around_filter :user_time_zone, :if => :current_user
def user_time_zone(&block)
Time.use_zone(current_user.time_zone, &block)
end
但我很难找到适合使用Grape
gem的当前应用程序的等价物。
我发现的唯一似乎是this:
use Grape::Middleware::Filter, before: lambda { Time.zone current_user.time_zone }, after: lambda { Time.zone 'UTC' }
但我想知道是否有更清洁的东西
答案 0 :(得分:0)
您可以将该常见行为放在模块中。
以下是我做类似的事情:
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