在行动之间存储数据

时间:2013-10-08 13:47:16

标签: ruby-on-rails ruby ruby-on-rails-4

在两个控制器操作之间存储数据的最佳方法是什么?

示例:

  1. 我有一大堆帖子ID ["2907", "2334", "2309",.... N]我在第一步确认创建它,然后转到另一个控制器操作的第二步。
  2. 另一个控制器操作呈现数据(日历,组),我在日历中选择日期,选择组并创建另一个日期时间数据数组确认并转到另一个操作
  3. 使用此数组和帖子数组操作的另一个操作,并再次渲染数据确认后我要保存的数据,DB中的数据安全并从会话中清除所有数组。
  4. 我将所有数组存储在会话中的操作之间,如session[:posts_ids] = params[:posts_ids]flash[:date_day] ||= params[:date_day]。我认为它不适合真正的大数据阵列。可能是将它存储在redis中的最佳方式吗?

1 个答案:

答案 0 :(得分:4)

这主要是基于意见的,但我认为你最好的两个选择是:

  1. 使用Redis,Memcached或其他一些服务器端缓存解决方案将对象存储在内存中,直到您需要它们为止。
  2. 让您的应用更加ajax-y并完成所有选择和临时 持久化那些数组客户端。
  3. 会话大小受基础策略的限制,而不是一般会话的硬限制。 CookieStore是默认设置,允许约4k的数据,因为浏览器cookie仅限于该大小。如果使用数据库支持的会话,则仅受数据库服务器的限制。

    您还应该记住,使用会话在请求之间存储数据并不是非常RESTful。