gpt4 book ai didi

ruby-on-rails - ActiveRecord 不会将字符串中的数组转换为数组

转载 作者:行者123 更新时间:2023-12-01 16:23:20 26 4
gpt4 key购买 nike

在 Rails 4.2.0 之前,ActiveRecord 会自动将字符串转换为 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

我在文档和变更日志中找不到这个。这种类型的字符串到数组的转换是否被删除或者是一个错误?在我的用例中,我有一个来自分配给模型的参数的字符串。它在 Rails 4.1.10 中工作,但在 Rails 4.2.1 中它引发 ActiveRecord::SerializationTypeMismatch

最佳答案

我不确定 4.1.10 和 4.2.1 之间的哪个提交引入了此行为,但它不是错误,因为它有据可查 here .特别是,

If class_name is specified, the serialized object must be of that class on assignment and retrieval. Otherwise SerializationTypeMismatch will be raised.

关于ruby-on-rails - ActiveRecord 不会将字符串中的数组转换为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29513532/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com