【发布时间】:2012-04-23 22:12:33
【问题描述】:
我正在使用 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
我在 lib 文件夹中的 ProductMaker 类:
class ProductMaker
def self.some_method_which_return_session(session)
session[:any_key] = "some value"
return session
end
end
但是,当我编写 KEY PROBLEM LINE 时,会话是一个 nil 值。如果我评论这一行,则会话是 ActionDispatch::Session::AbstractStore::SessionHash。
可能是什么问题? 我如何重构控制器逻辑,修改许多会话键并根据会话值“填充”模型到模型/类?
更新:
我正在阅读有关 ruby 中的绑定。
如何使用绑定和 eval 方法修改会话?
如果您有其他想法,请发表您的答案。
提前致谢
【问题讨论】:
标签: ruby-on-rails-3 session-variables session-cookies