我有一个应用程序,其中attr_accessor用于保存将传递给rake任务的模型的临时数据。看到这些属性没有数据库字段,并且它们不是从数据库数据计算的,attr_accessor数据是否会持续存在并可用于rake任务?如果我需要重新启动服务器,会发生什么情况 - 如果数据没有保存到数据库,数据是否会丢失?或者关闭它,我是否需要保存到临时文件或数据库字段?Rails中的非数据库attr_accessor属性持久性
0
A
回答
7
我假设您询问在通过Rake任务访问它们时,存储在源自Web请求的ActiveRecord对象的属性中的数据是否可用?
不,他们不会。这些数据甚至不会提供给下一个网络请求。如果您加载相同的记录两次,该数据甚至不会存在。
class Thing < ActiveRecord::Base
attr_accessor :data
end
#try this in script/console
thing = Thing.find(:first)
thing.data = "Something"
thing = Thing.find(:first)
puts thing.data
-> nil
-3
当然,它会丢失,你认为数据在它死后的位置在哪里?对于数据h(e)从哪里可以始终返回?
我想知道你需要什么数据,但最终的答案可能是数据属于数据库,除非它是大的二进制数据,如图像,你应该把它保存在文件系统中。
-1
这取决于您如何将数据传递给rake任务以及原因。如果你试图在请求的带外进行工作,这意味着不要让用户等待其完成,那么我建议看看Ryan在这里的优秀屏幕录像http://railscasts.com/episodes/128-starling-and-workling以了解工作队列。
如果它的其他一些奇特的原因,你必须使用这样的耙子,你可以传递数据作为命令行参数。这取决于您需要传递多少数据及其复杂性,因为它可能会很快失控。
使用丹尼尔的例子从上面:
的事情= Thing.find(:第一) thing.data = “东西”
rake myraketask thing_id=#{thing.id} data=#{thing.data}
相关问题
- 1. 持久性Java数据库
- 2. 设置轨道模型非数据库属性不`attr_accessor`
- 3. Rails应用程序中的非持久性数据
- 4. Rails ActiveRecord非数据库属性?
- 5. 数据库中的持久性
- 6. 数据库中的C++持久性
- 7. iOS非持久性数据结构
- 8. 非持久性数据使用ContentProviders
- 9. 数据持久性
- 10. 持久性数据
- 11. AngularJs的数据持久性库
- 12. 在新的RLMArray中使用Realm的非持久性属性
- 13. .NET ORMs和持久非属性状态
- 14. Eclipse持久属性
- 15. 持久性cookie不会非常持久
- 16. jqMobi的数据持久性
- 17. 使用NSManagedObject子类传输持久性和非持久性数据
- 18. Liferay Service Builder - 数据库持久性
- 19. Java嵌入式数据库持久性
- 20. Firebase数据库持久性存储
- 21. IdentityServer4与持久性数据库
- 22. Windows工作流持久性数据库?
- 23. Ruby on Rails,访问非永久属性和属性默认值
- 24. Rails模型 - 非持久类成员或属性?
- 25. 持久性子类的非持久性超类
- 26. 持久性数据库(MySQL的/的MongoDB /卡桑德拉/ BigTable的/ BigData)与非持久性阵列(PHP/Python)的
- 27. Rails模型attr_accessor属性没有保存?
- 28. 非持久性sharepoint列
- 29. 持久rightBarButtonItem UINavigationItem的属性
- 30. 高分数据持久性?
应该`data`收到一个冒号?有什么区别? – 2012-10-02 18:01:26