如何将重要的 session 信息视为模型?

我已经开始玩弄它了,其中一些是有效的。但我不确定我错过了什么?有没有人知道一个好的起点或者我可以在哪里找到一些好的例子?

另外,我可以使用模型来设置 session 变量,但是如何从模型中获取它们而不是总是使用 session[:blah]...我该如何从模型中检索它们呢?

class Cart
  attr_reader :items

  def initialize(session)
    @session = session
    @session[:cart] ||= []
    @items ||= session[:cart]
  end

  def add_rooms(new_rooms,startdate,days)
    #remove 0 values
    new_rooms.delete_if {|k, v| v == "0" }
    rooms = []
    new_rooms.each do |k, v|
      #rname = Room.find(k)
      #night = Available.find_by_room_id(k)
      rooms << {:room_id => k, :people => v, :no_days => days, :startdate => startdate}
    end

    @session[:cart] = rooms
    #@items = rooms

  end

end

最佳答案

这种方法有一些问题需要考虑

  • 根据您的 session 存储系统,如果您放入的对象很复杂,您的 session 可能会变得太大。 Rails 2.3 中 session 的默认存储是 cookie,因此浏览器肯定会施加限制。
  • 如果您的模型发生变化,在部署您的应用程序后,使用旧 session 的用户将看到从旧模型定义编码的对象,因此他们可能会遇到意外错误。
  • 关于ruby-on-rails - Rails session 模型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/995405/

    10-11 23:14
    查看更多