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
-
Bryan Larsen January 16th, 2011 @ 09:25 PM
- Assigned user set to Domizio Demichelis
- Tag changed from defect to defect, hobofields
- Milestone set to Hobo 1.3 (Rails 3)
- Milestone order changed from 197938 to 0
I've attached a patch that fixes Vault1 for Hobo 1.0/1.1, as well as test/documentation (stealing liberally from your example, Tomoaki)
-
Bryan Larsen January 16th, 2011 @ 10:37 PM
- Assigned user changed from Domizio Demichelis to Bryan Larsen
- Milestone changed from Hobo 1.3 (Rails 3) to Hobo 1.0X
- Milestone order changed from 45 to 0
Actually, it also breaks using Rails 2.3.10 & Ruby 1.9.2. Ruby 1.8.7 & Rails 2.3.10 work, as does Ruby 1.9.1 & Rails 2.3.5. I don't have a Rails 2.3.5/Ruby 1.9.2 test setup.
-
Bryan Larsen January 17th, 2011 @ 01:40 AM
This patch is breaking
HoboFields.can_wrap?
.Here's a proposed patch, but I hate adding more stuff to a function that's called every time an attribute is written to.
-
Bryan Larsen January 17th, 2011 @ 01:41 AM
- no changes were found...
-
Bryan Larsen January 17th, 2011 @ 08:48 PM
(from [f60ad7e811e98ccfbe9a1940a6acd2807d786736]) [#901] fix to let serialized doctest work in jRuby https://github.com/tablatom/hobo/commit/f60ad7e811e98ccfbe9a1940a6a...
-
Bryan Larsen January 17th, 2011 @ 08:49 PM
(from [ee346eb924c1542c4d7ab93b2707625e9aa19b78]) [#901] support for serialized type on Ruby 1.9.2 https://github.com/tablatom/hobo/commit/ee346eb924c1542c4d7ab93b270...
-
Bryan Larsen January 17th, 2011 @ 10:42 PM
(from [0d4b6abd166daf71e8c62566a81ee0a3130394a8]) [#901] fix to let serialized doctest work in jRuby https://github.com/tablatom/hobo/commit/0d4b6abd166daf71e8c62566a81...
-
Bryan Larsen January 17th, 2011 @ 10:43 PM
(from [3076e8ec32931f6e1e780db356301e90e914ab35]) [#901] support for serialized type on Ruby 1.9.2 https://github.com/tablatom/hobo/commit/3076e8ec32931f6e1e780db3563...
-
Bryan Larsen January 18th, 2011 @ 12:07 AM
Arg, that fix isn't compatible with Ruby 1.8.6. The cookbook still uses 1.8.6.
-
Bryan Larsen January 18th, 2011 @ 12:55 AM
Add 1.8.6 compatibility without too much run time impact by beating it even harder with the ugly stick.
-
Bryan Larsen January 18th, 2011 @ 06:33 PM
(from [bfb86d88cf748176fc4ec79ad0b458d57d1d87e0]) [#901] another try at this bug that retains Ruby 1.8.6 compatibility https://github.com/tablatom/hobo/commit/bfb86d88cf748176fc4ec79ad0b...
-
Bryan Larsen January 18th, 2011 @ 06:36 PM
(from [a9c7cb125e31f6fc17ecbd507f93183060f8f2a8]) [#901] another try at this bug that retains Ruby 1.8.6 compatibility https://github.com/tablatom/hobo/commit/a9c7cb125e31f6fc17ecbd507f9...
-
Bryan Larsen March 11th, 2011 @ 01:59 PM
- State changed from new to resolved
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.
Create your profile
Help contribute to this project by taking a few moments to create your personal profile. Create your profile ยป
People watching this ticket
Attachments
Tags
Referenced by
- 901 unable to save ``HoboFields::Types::SerializedObject`` (from [f60ad7e811e98ccfbe9a1940a6acd2807d786736]) [#901] ...
- 901 unable to save ``HoboFields::Types::SerializedObject`` (from [ee346eb924c1542c4d7ab93b2707625e9aa19b78]) [#901] ...
- 901 unable to save ``HoboFields::Types::SerializedObject`` (from [0d4b6abd166daf71e8c62566a81ee0a3130394a8]) [#901] ...
- 901 unable to save ``HoboFields::Types::SerializedObject`` (from [3076e8ec32931f6e1e780db356301e90e914ab35]) [#901] ...
- 901 unable to save ``HoboFields::Types::SerializedObject`` (from [bfb86d88cf748176fc4ec79ad0b458d57d1d87e0]) [#901] ...
- 901 unable to save ``HoboFields::Types::SerializedObject`` (from [a9c7cb125e31f6fc17ecbd507f93183060f8f2a8]) [#901] ...