如何为具有访问Cookie和会话权限的控制器创建Rails服务

问题描述 投票:0回答:1

我想创建一个服务来干燥我的控制器,并使它们更具可读性(并避免使用concerns),但这不是常见的服务,因为它能够获取和设置Cookie和会话条目。我该如何实现?

谢谢!

ruby-on-rails
1个回答
0
投票

您可以创建类似以下的服务:

class FooService

  delegate *%w(
    session
    cookies
  ), to: :controller

  class << self 

    def call(args={})
      new(args).call
    end

  end # Class Methods

  #=====================================================================
  # Instance Methods      
  #=====================================================================

  def initialize(args)
    args.each do |k,v|
      class_eval do 
        attr_accessor k
      end
      send("#{k}=",v)
    end        
  end

  def call

  end

end

然后,在您的控制器中,将其命名为:

FooService.call controller: self, other: :args

以这种方式调用时,在controller实例中将具有otherFooService方法,它们分别保存controller(称为服务的值)和:args的值。您还将拥有sessioncookies方法,它们是controller持有的会话和cookie。然后,您可以根据需要对其进行处理。

© www.soinside.com 2019 - 2024. All rights reserved.