在我的模型中,我有:
class Log < ActiveRecord::Base
serialize :data
...
def self.recover(table_name, row_id)
d = Log.where(table_name: table_name, row_id: row_id).where("log_type != #{symbol_to_constant(:delete)}").last
row = d.data
raise "Nothing to recover" if d.nil?
raise "No data to recover" if d.data.nil?
c = const_get(table_name)
ret = c.create(row.attributes)
end
在我的控制器中,我将其称为:
def index
Log.recover params[:t], params[:r]
redirect_to request.referer
end
问题是,如果我第一次访问此页面,我会收到下面指定的错误,但刷新后一切正常。哪里可能有问题?
undefined method `attributes' for #<String:0x00000004326fc8>
在数据列中保存了模型的实例。第一次列没有正确反序列化,它只是 yaml 文本。但刷新后一切正常。这很混乱,有什么问题吗?铁轨中的错误?
不是每次,有时在第一次访问时一切都很好。