#901 ✓resolved
Tomoaki Hayasaka

unable to save ``HoboFields::Types::SerializedObject``

Reported by Tomoaki Hayasaka | January 15th, 2011 @ 07:40 AM | in Hobo 1.0X

Hobo 1.3.0pre25, ruby 1.9.2p0

Saving "HoboFields::Types::SerializedObject" raises "ActiveRecord::SerializationTypeMismatch":

class Vault1 < ActiveRecord::Base
  hobo_model # Don't put anything above this
  fields do
    content :serialized
  end
end

class Vault2 < ActiveRecord::Base
  hobo_model # Don't put anything above this
  fields do
    content :serialized, :class => Hash
  end
end

__END__

>> Vault1.create!(:content => {:key => "in Vault"})
=> #<Vault id: 1, content: #<HoboFields::Types::SerializedObject:0xaaab7fc>>
>> Vault1.first.content             # expects {:key=>"in Vault"}
=> #<HoboFields::Types::SerializedObject:0xa883290>
>> Vault1.first.content.is_a? Hash  # expects true
=> false

>> Vault2.create!(:content => {:key => "in Vault"})
ActiveRecord::SerializationTypeMismatch: content was supposed to be a Hash, but was a HoboFields::Types::SerializedObject
        from /var/lib/gems/1.9.1/gems/activerecord-3.0.3/lib/active_record/attribute_methods/read.rb:105:in `unserialize_attribute'
        from /var/lib/gems/1.9.1/gems/activerecord-3.0.3/lib/active_record/attribute_methods/read.rb:81:in `read_attribute'
        from /var/lib/gems/1.9.1/gems/activerecord-3.0.3/lib/active_record/base.rb:1569:in `block in attributes'
        from /var/lib/gems/1.9.1/gems/activerecord-3.0.3/lib/active_record/base.rb:1569:in `each'
        from /var/lib/gems/1.9.1/gems/activerecord-3.0.3/lib/active_record/base.rb:1569:in `attributes'
        from /var/lib/gems/1.9.1/gems/activerecord-3.0.3/lib/active_record/attribute_methods.rb:57:in `attribute_method?'
        from /var/lib/gems/1.9.1/gems/activemodel-3.0.3/lib/active_model/attribute_methods.rb:394:in `block in match_attribute_method?'
        from /var/lib/gems/1.9.1/gems/activemodel-3.0.3/lib/active_model/attribute_methods.rb:393:in `each'
        from /var/lib/gems/1.9.1/gems/activemodel-3.0.3/lib/active_model/attribute_methods.rb:393:in `match_attribute_method?'
        from /var/lib/gems/1.9.1/gems/activemodel-3.0.3/lib/active_model/attribute_methods.rb:360:in `method_missing'
        from /var/lib/gems/1.9.1/gems/activerecord-3.0.3/lib/active_record/attribute_methods.rb:46:in `method_missing'
        from /var/lib/gems/1.9.1/gems/hobo-1.3.0.pre25/lib/hobo/model/find_for.rb:48:in `method_missing_with_find_for'
        from /var/lib/gems/1.9.1/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/database_statements.rb:296:in `flatten'
        from /var/lib/gems/1.9.1/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/database_statements.rb:296:in `rollback_transaction_records'
        from /var/lib/gems/1.9.1/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/database_statements.rb:147:in `rescue in transaction'
        from /var/lib/gems/1.9.1/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/database_statements.rb:127:in `transaction'
        from /var/lib/gems/1.9.1/gems/activerecord-3.0.3/lib/active_record/transactions.rb:204:in `transaction'
        from /var/lib/gems/1.9.1/gems/activerecord-3.0.3/lib/active_record/transactions.rb:287:in `with_transaction_returning_status'
        from /var/lib/gems/1.9.1/gems/activerecord-3.0.3/lib/active_record/transactions.rb:242:in `save!'
        from /var/lib/gems/1.9.1/gems/activerecord-3.0.3/lib/active_record/validations.rb:34:in `create!'
        from (irb):4
        from /var/lib/gems/1.9.1/gems/railties-3.0.3/lib/rails/commands/console.rb:44:in `start'
        from /var/lib/gems/1.9.1/gems/railties-3.0.3/lib/rails/commands/console.rb:8:in `start'
        from /var/lib/gems/1.9.1/gems/railties-3.0.3/lib/rails/commands.rb:23:in `<top (required)>'
        from script/rails:6:in `require'
        from script/rails:6:in `<main>'

At least Vault2 case works with Hobo 1.0.2 (Vault1 doesn't, as #147).

Comments and changes to this ticket

Please Sign in or create a free account to add a new ticket.

With your very own profile, you can contribute to projects, track your activity, watch tickets, receive and update tickets through your email and much more.

New-ticket Create new ticket

Create your profile

Help contribute to this project by taking a few moments to create your personal profile. Create your profile ยป

Attachments

Referenced by

Pages