Rails会话存储与ActiveRecord对象中的缓存

时间:2018-06-18 18:14:45

标签: ruby-on-rails

我需要在HTTP请求之间存储大型数据集。数据来自csv文件,我需要传递请求。我有两个选择,因为cookie存储有4kb的限制:

1)使用会话存储而不是Cookie存储

2)将数据作为类方法存储在ActiveRecord类对象上:

class MyClass < ActiveRecord::Base
  def self.store_data(file)
    @file = file
  end
end

由于它存储在模型的类方法中,因此它将在请求中保持不变。

哪一项对超过4kb的数据更有效?

1 个答案:

答案 0 :(得分:0)

您最好不要将此类数据存储在持久数据存储中,例如您建议的数据库或Rails缓存。

通常,会话和cookie应该只存储简单的对象,因为它们是易变的。

def controller
  @data = Rails.cache.read("requests/abc/#{session[:user_id_or_other_identifier]}")
end