Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在RubyonRails中跨请求持久化ActiveRecord对象_Ruby On Rails_Persistence_Request - Fatal编程技术网

Ruby on rails 在RubyonRails中跨请求持久化ActiveRecord对象

Ruby on rails 在RubyonRails中跨请求持久化ActiveRecord对象,ruby-on-rails,persistence,request,Ruby On Rails,Persistence,Request,我正试图找到一种方法,以尽可能最有效的方式跨请求持久化ActiveRecord对象 用例如下:用户提供一些参数并单击“显示预览”。当这种情况发生时,我会进行大量的背景计算来生成预览。在这个过程中创建了许多ActiveRecord对象。看到预览后,用户单击“提交”。我不想在这里重新计算所有内容,只想保存由上一个请求创建的ActiveRecord对象。不能保证这两个请求总是发生(例如,用户在看到预览后可能会选择退出,在这种情况下,我希望从持久性层中删除这些对象) 是否有任何行之有效的方法来实现上述目

我正试图找到一种方法,以尽可能最有效的方式跨请求持久化ActiveRecord对象

用例如下:用户提供一些参数并单击“显示预览”。当这种情况发生时,我会进行大量的背景计算来生成预览。在这个过程中创建了许多ActiveRecord对象。看到预览后,用户单击“提交”。我不想在这里重新计算所有内容,只想保存由上一个请求创建的ActiveRecord对象。不能保证这两个请求总是发生(例如,用户在看到预览后可能会选择退出,在这种情况下,我希望从持久性层中删除这些对象)

是否有任何行之有效的方法来实现上述目标?似乎这应该是一种常见的情况。我不能使用会话,因为数据可能超过分配给会话数据的空间。此外,我不希望将这些对象保存到数据库中,因为用户在技术上没有“提交”数据。因此,我所寻找的更多的是一个内存持久层,它可以保证在执行第二个请求时这些对象的存在


谢谢。

我不确定是否以脏状态保存对象是最好的选择,因为您可以使用某种控制属性(如状态或状态)来管理它

这样做也会非常好,因为您可以在整个过程中验证数据,直到用户决定提交所有内容时才进行验证。我知道Ryan Bates有一个屏幕广播来创建这种复杂的表单()


希望它能有所帮助。

我不确定是否以脏状态保存对象是最好的选择,因为您可以使用某种控制属性(如state或status)来管理它

这样做也会非常好,因为您可以在整个过程中验证数据,直到用户决定提交所有内容时才进行验证。我知道Ryan Bates有一个屏幕广播来创建这种复杂的表单()


希望它能有所帮助。

只需将其保存到数据库中,而不向应用程序添加其他并非真正持久的层,就可以节省大量不必要的工作


一种可能的方法是:使用
state
属性告诉您的记录处于何种状态(例如,“草稿”、“已提交”)。然后运行垃圾回收器删除在特定时间段内未提交的草稿(及其相邻记录)。

只需将草稿保存到DB,而不向应用程序添加其他并非真正持久的层,就可以节省大量不必要的工作


一种可能的方法是:使用
state
属性告诉您的记录处于何种状态(例如,“草稿”、“已提交”)。然后运行垃圾回收器删除在特定时间段内未提交的草稿(及其相邻记录)。

是因为您使用基于cookie的会话,所以数据会超过分配给会话数据的空间吗?如果需要更多空间,为什么不使用基于活动记录的会话?对基于cookie的会话进行更改很简单,而且实际上是推荐的方式(因此,我不知道为什么它不是默认方式)

是因为您使用基于cookie的会话,所以数据可能超过分配给会话数据的空间的原因吗?如果需要更多空间,为什么不使用基于活动记录的会话?从基于cookie的会话中进行更改很简单,实际上是推荐的方式(所以我不知道为什么不是默认方式)