Rails 4.2 报废警告:`serialized_attributes`已被废弃且没有替代品。

11

在大多数控制器测试中,我(以及其他人)都会收到这个警告。我知道现在只是一个警告……直到5发布为止。我不确定我需要改变什么来遵守这个弃用。serialized_attributes有什么变化吗?我想让这个警告消失并改进我的代码以为5.0做好准备……但是不确定该如何继续。谢谢。

更新

当从控制器测试中触发标准的更新操作时,我收到以下错误:

@document.update_attributes(document_params)

测试中(为了这个例子而压缩):

    before do
      @document = documents(:drivers_license)
    end

    def valid_params
      { name: 'Passport' }
    end

    it "must update document" do
      put :update, id: @document, document: valid_params
      assert_redirected_to documents_path
    end

这个测试通过了,但是在Rails 4.2中会出现以下错误提示:DEPRECATION WARNING: serialized_attributes被弃用且没有替代品,将在Rails 5.0中被移除。

所以,在这个例子中...serialized_attributes指的是"{ name: 'Passport' }"吗?


1
了解如何修复它,取决于您如何使用它。 - sevenseacat
1
仅仅因为某个东西被认为对整个社区不再好用,并不意味着它对你没用。你可以使用 https://github.com/rails/rails/blob/4-2-stable/activerecord/lib/active_record/attribute_methods/serialization.rb 中包含序列化属性的方法来扩展你的ActiveRecord模块。但是,如果这个弃用警告来自于你正在使用的gem而不是你的代码,那么你很可能希望向该gem的作者提交一个工单/问题,以便他们能够适应未来版本的Rails。 - kobaltz
1
这个问题中讨论了弃用情况:https://github.com/rails/rails/pull/15704。警告似乎有点令人惊讶,可能应该至少包括对Rails升级指南的引用。 - mahemoff
1个回答

9

1
我正在使用paper_trail。谢谢。 - hellion
1
升级到 paper_trail 的 v4 beta 版本(请参见该问题)为我解决了警告。@hellion 如果这个答案对你有用,请接受它。虽然这是一个通用的 Rails 更新,但实际上大多数开发者可能会因为一些 gem,如 paper_trail 和 rails_admin 而遇到此问题。 - mahemoff

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接