Ruby Rails 5序列化数据库列:NoMethodError:undefined method`[]=';零级:零级

Ruby Rails 5序列化数据库列:NoMethodError:undefined method`[]=';零级:零级,ruby,serialization,ruby-on-rails-5,Ruby,Serialization,Ruby On Rails 5,升级到Rails 5.0之后,似乎无法读取序列化列 class PaymentNotification < ActiveRecord::Base serialize :raw_IPN ... end 错误:(在控制台中测试) NoMethodError:nil类的未定义方法“[]” 堆栈跟踪: actionpack (5.0.0) lib/action_controller/metal/strong_parameters.rb:414:in `[]=' /home/fre

升级到Rails 5.0之后,似乎无法读取序列化列

class PaymentNotification < ActiveRecord::Base
  serialize :raw_IPN
  ...
end
错误:(在控制台中测试)

NoMethodError:nil类的未定义方法“[]”

堆栈跟踪:

  actionpack (5.0.0) lib/action_controller/metal/strong_parameters.rb:414:in `[]='
  /home/frexuz/.rbenv/versions/2.3.1/lib/ruby/2.3.0/psych/visitors/to_ruby.rb:362:in `block in revive_hash'
  /home/frexuz/.rbenv/versions/2.3.1/lib/ruby/2.3.0/psych/visitors/to_ruby.rb:336:in `revive_hash'
  /home/frexuz/.rbenv/versions/2.3.1/lib/ruby/2.3.0/psych/visitors/to_ruby.rb:281:in `visit_Psych_Nodes_Mapping'
  /home/frexuz/.rbenv/versions/2.3.1/lib/ruby/2.3.0/psych/visitors/visitor.rb:16:in `visit'
  /home/frexuz/.rbenv/versions/2.3.1/lib/ruby/2.3.0/psych/visitors/visitor.rb:6:in `accept'
  /home/frexuz/.rbenv/versions/2.3.1/lib/ruby/2.3.0/psych/visitors/to_ruby.rb:32:in `accept'
  /home/frexuz/.rbenv/versions/2.3.1/lib/ruby/2.3.0/psych/visitors/to_ruby.rb:311:in `visit_Psych_Nodes_Document'
  /home/frexuz/.rbenv/versions/2.3.1/lib/ruby/2.3.0/psych/visitors/visitor.rb:16:in `visit'
  /home/frexuz/.rbenv/versions/2.3.1/lib/ruby/2.3.0/psych/visitors/visitor.rb:6:in `accept'
  /home/frexuz/.rbenv/versions/2.3.1/lib/ruby/2.3.0/psych/visitors/to_ruby.rb:32:in `accept'
  /home/frexuz/.rbenv/versions/2.3.1/lib/ruby/2.3.0/psych/nodes/node.rb:38:in `to_ruby'
  /home/frexuz/.rbenv/versions/2.3.1/lib/ruby/2.3.0/psych.rb:253:in `load'
  activerecord (5.0.0) lib/active_record/coders/yaml_column.rb:24:in `load'
  activerecord (5.0.0) lib/active_record/type/serialized.rb:18:in `deserialize'
  activerecord (5.0.0) lib/active_record/attribute.rb:140:in `type_cast'
  activerecord (5.0.0) lib/active_record/attribute.rb:38:in `value'
  activerecord (5.0.0) lib/active_record/attribute_set.rb:42:in `fetch_value'
  activerecord (5.0.0) lib/active_record/attribute_methods/read.rb:66:in `_read_attribute'
  activerecord (5.0.0) lib/active_record/attribute_methods/read.rb:36:in `__temp__271677f59405e4'
  app/admin/payment_notifications.rb:17:in `block (3 levels) in <top (required)>'
actionpack(5.0.0)lib/action\u controller/metal/strong\u参数。rb:414:in`[]='
/home/frexuz/.rbenv/versions/2.3.1/lib/ruby/2.3.0/psych/visitors/to_ruby.rb:362:in'block in resove_hash'
/home/frexuz/.rbenv/versions/2.3.1/lib/ruby/2.3.0/psych/visitors/to_ruby.rb:336:in'reserve_hash'
/home/frexuz/.rbenv/versions/2.3.1/lib/ruby/2.3.0/psych/visitors/to_ruby.rb:281:in'visit_psych_Nodes_Mapping'
/home/frexuz/.rbenv/versions/2.3.1/lib/ruby/2.3.0/psych/visitors/visitor.rb:16:in'visit'
/home/frexuz/.rbenv/versions/2.3.1/lib/ruby/2.3.0/psych/visitors/visitor.rb:6:in'accept'
/home/frexuz/.rbenv/versions/2.3.1/lib/ruby/2.3.0/psych/visitors/to_ruby.rb:32:in'accept'
/home/frexuz/.rbenv/versions/2.3.1/lib/ruby/2.3.0/psych/visitors/to_ruby.rb:311:in'visit_psych_Nodes_Document'
/home/frexuz/.rbenv/versions/2.3.1/lib/ruby/2.3.0/psych/visitors/visitor.rb:16:in'visit'
/home/frexuz/.rbenv/versions/2.3.1/lib/ruby/2.3.0/psych/visitors/visitor.rb:6:in'accept'
/home/frexuz/.rbenv/versions/2.3.1/lib/ruby/2.3.0/psych/visitors/to_ruby.rb:32:in'accept'
/home/frexuz/.rbenv/versions/2.3.1/lib/ruby/2.3.0/psych/nodes/node.rb:38:in'to_ruby'
/home/frexuz/.rbenv/versions/2.3.1/lib/ruby/2.3.0/psych.rb:253:in'load'
activerecord(5.0.0)lib/active_record/coders/yaml_column.rb:24:in'load'
activerecord(5.0.0)lib/active_record/type/serialized.rb:18:在“反序列化”中
activerecord(5.0.0)lib/active\u record/attribute.rb:140:in'type\u cast'
activerecord(5.0.0)lib/active_record/attribute.rb:38:in'value'
activerecord(5.0.0)lib/active\u record/attribute\u set.rb:42:in'fetch\u value'
activerecord(5.0.0)lib/active\u record/attribute\u methods/read.rb:66:in`\u read\u attribute'
activerecord(5.0.0)lib/active\u record/attribute\u methods/read.rb:36:in`uuu temp\uuuu 271677f59405e4'
app/admin/payment_notifications.rb:17:in'block(3级)in'

此问题已在5-0-stable分支中修复

解决方案:
gem'rails',github:“rails/rails”,分支:“5-0-stable”

捆绑更新rails
,直到他们发布新的gem版本。

我也可以在rails 5.0.0.1中确认这个问题。返回到建议的分支,不再接收错误。
p = PaymentNotification.last
PaymentNotification Load (0.1ms)  SELECT  `payment_notifications`.* FROM `payment_notifications` ORDER BY
 `payment_notifications`.`id` DESC LIMIT 1
  actionpack (5.0.0) lib/action_controller/metal/strong_parameters.rb:414:in `[]='
  /home/frexuz/.rbenv/versions/2.3.1/lib/ruby/2.3.0/psych/visitors/to_ruby.rb:362:in `block in revive_hash'
  /home/frexuz/.rbenv/versions/2.3.1/lib/ruby/2.3.0/psych/visitors/to_ruby.rb:336:in `revive_hash'
  /home/frexuz/.rbenv/versions/2.3.1/lib/ruby/2.3.0/psych/visitors/to_ruby.rb:281:in `visit_Psych_Nodes_Mapping'
  /home/frexuz/.rbenv/versions/2.3.1/lib/ruby/2.3.0/psych/visitors/visitor.rb:16:in `visit'
  /home/frexuz/.rbenv/versions/2.3.1/lib/ruby/2.3.0/psych/visitors/visitor.rb:6:in `accept'
  /home/frexuz/.rbenv/versions/2.3.1/lib/ruby/2.3.0/psych/visitors/to_ruby.rb:32:in `accept'
  /home/frexuz/.rbenv/versions/2.3.1/lib/ruby/2.3.0/psych/visitors/to_ruby.rb:311:in `visit_Psych_Nodes_Document'
  /home/frexuz/.rbenv/versions/2.3.1/lib/ruby/2.3.0/psych/visitors/visitor.rb:16:in `visit'
  /home/frexuz/.rbenv/versions/2.3.1/lib/ruby/2.3.0/psych/visitors/visitor.rb:6:in `accept'
  /home/frexuz/.rbenv/versions/2.3.1/lib/ruby/2.3.0/psych/visitors/to_ruby.rb:32:in `accept'
  /home/frexuz/.rbenv/versions/2.3.1/lib/ruby/2.3.0/psych/nodes/node.rb:38:in `to_ruby'
  /home/frexuz/.rbenv/versions/2.3.1/lib/ruby/2.3.0/psych.rb:253:in `load'
  activerecord (5.0.0) lib/active_record/coders/yaml_column.rb:24:in `load'
  activerecord (5.0.0) lib/active_record/type/serialized.rb:18:in `deserialize'
  activerecord (5.0.0) lib/active_record/attribute.rb:140:in `type_cast'
  activerecord (5.0.0) lib/active_record/attribute.rb:38:in `value'
  activerecord (5.0.0) lib/active_record/attribute_set.rb:42:in `fetch_value'
  activerecord (5.0.0) lib/active_record/attribute_methods/read.rb:66:in `_read_attribute'
  activerecord (5.0.0) lib/active_record/attribute_methods/read.rb:36:in `__temp__271677f59405e4'
  app/admin/payment_notifications.rb:17:in `block (3 levels) in <top (required)>'