Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.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 Rails模型在存储之前序列化_Ruby On Rails_Ruby - Fatal编程技术网

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还是可以正常工作的。