Я использую Rails 3. Я очень подробно кодировал контроллер. Итак, я пытаюсь рефакторинг контроллера.
Я кодировал класс ProductMaker, который создает продукт и модифицирует сеанс (задача продукта для формы мастера - current_step, если запрос является обновлением и т. Д.)
В этом классе есть метод, который получает сеанс в качестве параметра, изменяет и затем возвращает этот новый сеанс.
Действие контроллера:
def new
#INITIALIZE CODE
session[:refresh] ||= SortedArray.new [1]
#...MORE CODE
end
def create
#...MUCH CODE
unless Utilities.is_refresh(session[:refresh])
#...more code
session = ProductMaker.some_method_which_return_session(session) #KEY PROBLEM LINE
#...more code
end
#... MORE CODE
end
Мой класс ProductMaker в папке lib:
class ProductMaker
def self.some_method_which_return_session(session)
session[:any_key] = "some value"
return session
end
end
Однако когда я пишу КЛЮЧЕВУЮ ЛИНИЮ ПРОБЛЕМЫ, сессия имеет нулевое значение. Если я прокомментирую эту строку, то сессия будет ActionDispatch :: Session :: AbstractStore :: SessionHash.
В чем может быть проблема?
Как я могу реорганизовать логику контроллера, которая модифицирует многие ключи сеанса и «заполняет» модель в зависимости от значений сеанса, до модели / класса?
UPDATE:
Я читаю о связывании в ruby.
Как можно изменить сеанс, используя привязки и метод eval?
Если у вас есть другие идеи, пожалуйста, оставьте свой ответ.
Заранее спасибо