ActiveRecord不会将字符串中的数组转换为数组

阿克赛·拉瓦特(Akshay Rawat)

在Rails 4.2.0之前,ActiveRecord会自动将String转换为所指定的类型serialize

class Post < ActiveRecord::Base
  serialize :options, Array # Column type: 'text', DB: PostgreSQL
end

class PostTest < ActiveSupport::TestCase
  test "assign options" do
    post = Post.new
    post.options = "[1,2,3]" # => "[1,2,3]"
  end
end

在Rails 4.2.1中

class Post < ActiveRecord::Base
  serialize :options, Array
end

class PostTest < ActiveSupport::TestCase
  test "assign options" do
    post = Post.new
    post.options = "[1,2,3]" # ActiveRecord::SerializationTypeMismatch: Attribute was supposed to be a Array, but was a String.
  end
end

我在文档changelog中找不到此文件。是否已删除这种类型的字符串到数组转换,还是一个错误?在我的用例中,我从分配给模型的参数中获得了这样的字符串。它可以在Rails 4.1.10中工作,但在Rails 4.2.1中它会提高ActiveRecord::SerializationTypeMismatch

巴特·杰德罗查

我不确定4.1.10和4.2.1之间的哪个提交引入了此行为,但这不是bug,因为在此处已对其进行了详细记录特别是,

如果指定了class_name,则序列化的对象在分配和检索时必须属于该类。否则,将引发SerializationTypeMismatch。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么GSON会将对象数组转换为字符串数组呢?

来自分类Dev

将数组中的数组转换为字符串

来自分类Dev

typcast不会将整个字符串转换为int(在C中)

来自分类Dev

Join不会将splat参数转换为Ruby中的字符串

来自分类Dev

从字符数组转换为字符串

来自分类Dev

如何将字符串转换为数组中的字符串数组

来自分类Dev

转到:将数组中的字符串转换为整数

来自分类Dev

将BigDecimal转换为数组中的字符串

来自分类Dev

将字符串转换为数组中的日期对象

来自分类Dev

将字符串转换为Java中的Int数组

来自分类Dev

从字符串中删除元素+将其转换为数组

来自分类Dev

如何数组内容转换为字符串在Java中?

来自分类Dev

将字符串转换为Javascript中的数组?

来自分类Dev

将BigDecimal转换为数组中的字符串

来自分类Dev

将字符串转换为数组中的日期对象

来自分类Dev

将JSON字符串转换为php中的数组?

来自分类Dev

将字符串转换为Java中的Int数组

来自分类Dev

将数组转换为句子中的字符串

来自分类Dev

将字符串转换为JavaScript中的对象数组

来自分类Dev

将数组中的元素从数字转换为字符串

来自分类Dev

json数组转换为表中的字符串

来自分类Dev

R:将数组中的字符串转换为整数

来自分类Dev

将字符串转换为数组 JavaScript 中的数字

来自分类Dev

将数组转换为字符串

来自分类Dev

将字符串转换为数组

来自分类Dev

字符串数组转换为枚举

来自分类Dev

Matlab字符串转换为数组

来自分类Dev

将数组转换为字符串

来自分类Dev

Perl中的字符串分区(将复杂的字符串转换为数组)