Вы можете создать что-то вроде:
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
и other
в экземпляре FooService
, которые содержат значения controller
(тот, который вызвал службу) и :args
, соответственно. У вас также будут методы session
и cookies
, которые являются сеансом и файлами cookie, которые хранятся в controller
. Тогда вы можете делать с ними, как хотите.