Ruby on rails Rails模型在存储之前序列化
在将列放入数据库之前,我一直在尝试序列化该列。我想在我的模型中执行以下操作:Ruby on rails Rails模型在存储之前序列化,ruby-on-rails,ruby,Ruby On Rails,Ruby,在将列放入数据库之前,我一直在尝试序列化该列。我想在我的模型中执行以下操作: class SearchResult < ActiveRecord::Base serialize :data end classsearchresult
class SearchResult < ActiveRecord::Base
serialize :data
end
classsearchresult
…但我保存时它不会序列化。所以我求助于这个:
class SearchResult < ActiveRecord::Base
before_save :serialize_data
private
def serialize_data
self.data = YAML.dump self.data
end
end
classsearchresult
这很有效。但是,是否有任何原因导致顶层代码不起作用(更整洁),或者我需要声明serialize方法?它不会抛出任何错误,但也不会做我希望它能做的事情。您尝试过:
class SearchResult < ActiveRecord::Base
serialize :data, Hash
end
classsearchresult
那怎么办
class SearchResult < ActiveRecord::Base
store :data, accessors: [:data_help]
end
classsearchresult
不,应该可以,您是否尝试设置要序列化的对象序列化:数据,数组
?给我一个错误ActiveRecord::SerializationTypeMismatch:属性应该是散列,但在我运行测试时是字符串
,在应用程序中您的数据对象是什么?你给它分配了什么?我正在使用GoogleAPI客户端向YouTube API发出请求。我的数据对象是我从[#“youtube”搜索结果、“etag”=>“\”ePFRUfYBkeQ2ncpP9…
(来自abort)中得到的。我得到的数据我希望在会话中可用。当然,我不能将其放入会话变量中,所以我想将其写入数据库,稍后在另一个页面中检索。您需要指定数据对象的类别。请尝试serialize:data,Google::APIClient::Schema::Youtube::V3::SearchResult
否,这也给了我错误-{uninitialized constant Google::APIClient::Schema::Youtube(namererror)
。也许它不太喜欢这个对象,YAML还是可以正常工作的。