Rails中的非DB attr_accessor属性持久性

Mis*_*ced 0 ruby activerecord ruby-on-rails

我有一个应用程序,其中attr_accessor用于保存模型的临时数据,该模型将传递给rake任务.看到没有这些属性的数据库字段,并且它们不是从数据库数据计算的,attr_accessor数据是否会持续存在并且可用于rake任务?如果我需要重新启动服务器会发生什么 - 如果数据没有保存到数据库,数据会丢失吗?或者为了解决这个问题,我是否需要保存到临时文件或数据库字段?

Dan*_*ley 8

我假设您在询问通过Rake任务访问它们时,存储在源自Web请求的ActiveRecord对象属性中的数据是否可用?

不,他们不会.该数据甚至无法用于下一个Web请求.如果您加载两次相同的记录,那么该数据甚至不会存在.

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
Run Code Online (Sandbox Code Playgroud)