Hi all;
I'm working to convert an application from MySQL to PostgreSQL and have a
hit a problem with my use of a Hobo rich type:
class Dollars < DelegateClass(BigDecimal)
COLUMN_TYPE = :decimal
HoboFields.register_type(:dollars, self)
end
I use the Dollars class in a model as follows:
fields
mtg_amount :dollars, :precision => 12, :scale => 2, :default => 0
end
In a conversion application I wrote to move data from SQL Server into
PostgreSQL, I'm hitting an issue I really don't know how to address (other
than doing away with the Dollars class):
During the insert of a new record that includes a mtg_amount value (such as
this)
newInstrument = Instrument.new(
:mtg_amount => get_mtg_amount(sql_server_record),
...
newInstrument.save!
I'm getting:
/Users/tgriffin/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-4.0.2/lib/active_record/connection_adapters/abstract/quoting.rb:76:in
`type_cast': can't cast Dollars to decimal (TypeError)
from
/Users/tgriffin/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-4.0.2/lib/active_record/connection_adapters/postgresql/quoting.rb:120:in
`type_cast'
from
/Users/tgriffin/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-4.0.2/lib/active_record/connection_adapters/postgresql_adapter.rb:783:in
`block in exec_cache'
from
/Users/tgriffin/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-4.0.2/lib/active_record/connection_adapters/postgresql_adapter.rb:782:in
`map'
from
/Users/tgriffin/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-4.0.2/lib/active_record/connection_adapters/postgresql_adapter.rb:782:in
`exec_cache'
from
/Users/tgriffin/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-4.0.2/lib/active_record/connection_adapters/postgresql/database_statements.rb:139:in
`block in exec_query'
from
/Users/tgriffin/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-4.0.2/lib/active_record/connection_adapters/abstract_adapter.rb:435:in
`block in log'
from
/Users/tgriffin/.rvm/gems/ruby-1.9.3-p374/gems/activesupport-4.0.2/lib/active_support/notifications/instrumenter.rb:20:in
`instrument'
from
/Users/tgriffin/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-4.0.2/lib/active_record/connection_adapters/abstract_adapter.rb:430:in
`log'
from
/Users/tgriffin/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-4.0.2/lib/active_record/connection_adapters/postgresql/database_statements.rb:137:in
`exec_query'
from
/Users/tgriffin/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-4.0.2/lib/active_record/connection_adapters/postgresql/database_statements.rb:184:in
`exec_insert'
from
/Users/tgriffin/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-4.0.2/lib/active_record/connection_adapters/abstract/database_statements.rb:96:in
`insert'
from
/Users/tgriffin/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-4.0.2/lib/active_record/connection_adapters/abstract/query_cache.rb:14:in
`insert'
from
/Users/tgriffin/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-4.0.2/lib/active_record/relation.rb:76:in
`insert'
from
/Users/tgriffin/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-4.0.2/lib/active_record/persistence.rb:509:in
`create_record'
from
/Users/tgriffin/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-4.0.2/lib/active_record/attribute_methods/dirty.rb:78:in
`create_record'
from
/Users/tgriffin/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-4.0.2/lib/active_record/callbacks.rb:306:in
`block in create_record'
from
/Users/tgriffin/.rvm/gems/ruby-1.9.3-p374/gems/activesupport-4.0.2/lib/active_support/callbacks.rb:373:in
`_run__4347159504384664941__create__callbacks'
from
/Users/tgriffin/.rvm/gems/ruby-1.9.3-p374/gems/activesupport-4.0.2/lib/active_support/callbacks.rb:80:in
`run_callbacks'
from
/Users/tgriffin/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-4.0.2/lib/active_record/callbacks.rb:306:in
`create_record'
from
/Users/tgriffin/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-4.0.2/lib/active_record/timestamp.rb:57:in
`create_record'
from
/Users/tgriffin/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-4.0.2/lib/active_record/persistence.rb:477:in
`create_or_update'
from
/Users/tgriffin/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-4.0.2/lib/active_record/callbacks.rb:302:in
`block in create_or_update'
from
/Users/tgriffin/.rvm/gems/ruby-1.9.3-p374/gems/activesupport-4.0.2/lib/active_support/callbacks.rb:433:in
`_run__4347159504384664941__save__callbacks'
from
/Users/tgriffin/.rvm/gems/ruby-1.9.3-p374/gems/activesupport-4.0.2/lib/active_support/callbacks.rb:80:in
`run_callbacks'
from
/Users/tgriffin/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-4.0.2/lib/active_record/callbacks.rb:302:in
`create_or_update'
from
/Users/tgriffin/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-4.0.2/lib/active_record/persistence.rb:128:in
`save!'
from
/Users/tgriffin/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-4.0.2/lib/active_record/validations.rb:57:in
`save!'
from
/Users/tgriffin/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-4.0.2/lib/active_record/attribute_methods/dirty.rb:41:in
`save!'
from
/Users/tgriffin/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-4.0.2/lib/active_record/transactions.rb:275:in
`block in save!'
from
/Users/tgriffin/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-4.0.2/lib/active_record/transactions.rb:326:in
`block in with_transaction_returning_status'
from
/Users/tgriffin/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-4.0.2/lib/active_record/connection_adapters/abstract/database_statements.rb:202:in
`block in transaction'
from
/Users/tgriffin/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-4.0.2/lib/active_record/connection_adapters/abstract/database_statements.rb:210:in
`within_new_transaction'
from
/Users/tgriffin/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-4.0.2/lib/active_record/connection_adapters/abstract/database_statements.rb:202:in
`transaction'
from
/Users/tgriffin/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-4.0.2/lib/active_record/transactions.rb:209:in
`transaction'
from
/Users/tgriffin/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-4.0.2/lib/active_record/transactions.rb:323:in
`with_transaction_returning_status'
from
/Users/tgriffin/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-4.0.2/lib/active_record/transactions.rb:275:in
`save!'
from
/Volumes/HD/Users/tgriffin/Sites/daybook2polar/lib/convert_instruments.rb:92:in
`block in convert_instruments'
from
/Users/tgriffin/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-4.0.2/lib/active_record/relation/delegation.rb:13:in
`each'
from
/Users/tgriffin/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-4.0.2/lib/active_record/relation/delegation.rb:13:in
`each'
from
/Volumes/HD/Users/tgriffin/Sites/daybook2polar/lib/convert_instruments.rb:22:in
`convert_instruments'
I just don't understand enough of the mechanism that ActiveRecord is using
at this stage. If "dollars" is already a decimal, what's the big deal?
Many thanks,
Tim
--
You received this message because you are subscribed to the Google Groups "Hobo
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/hobousers.
For more options, visit https://groups.google.com/groups/opt_out.