globalize/globalize

TypeError: can't cast Array

dalezak opened this issue · 1 comments

I'm having an issue with Postgres array on globalize (5.3.0), activerecord (6.0.3.2), rails (6.0.3.2) and ruby (2.6.6). I read the comment but still no luck.

My migration has t.text :options, array: true, default: []:

create_table :questions do |t|
  t.string :name
  t.text :options, array: true, default: []
  t.timestamps
end

I included {type: :text, array: true, default: []} in the create_translation_table!:

Question.create_translation_table! name: :string, options: {type: :text, array: true, default: []}

However when I try to seed some questions like:

Question.create(name: "Gender", options: ["male","female"])

Normally this saves fine, but since adding globalize I now get an error TypeError: can't cast Array:

TypeError: can't cast Array
~.rvm/gems/ruby-2.6.6/gems/activerecord-6.0.3.2/lib/active_record/connection_adapters/abstract/quoting.rb:34:in `rescue in type_cast'
~.rvm/gems/ruby-2.6.6/gems/activerecord-6.0.3.2/lib/active_record/connection_adapters/abstract/quoting.rb:24:in `type_cast'
~.rvm/gems/ruby-2.6.6/gems/activerecord-6.0.3.2/lib/active_record/connection_adapters/abstract/quoting.rb:203:in `block in type_casted_binds'
~.rvm/gems/ruby-2.6.6/gems/activerecord-6.0.3.2/lib/active_record/connection_adapters/abstract/quoting.rb:203:in `map'
~.rvm/gems/ruby-2.6.6/gems/activerecord-6.0.3.2/lib/active_record/connection_adapters/abstract/quoting.rb:203:in `type_casted_binds'
~.rvm/gems/ruby-2.6.6/gems/activerecord-6.0.3.2/lib/active_record/connection_adapters/postgresql_adapter.rb:672:in `exec_no_cache'
~.rvm/gems/ruby-2.6.6/gems/activerecord-6.0.3.2/lib/active_record/connection_adapters/postgresql_adapter.rb:656:in `execute_and_clear'
~.rvm/gems/ruby-2.6.6/gems/activerecord-6.0.3.2/lib/active_record/connection_adapters/postgresql/database_statements.rb:98:in `exec_query'
~.rvm/gems/ruby-2.6.6/gems/activerecord-6.0.3.2/lib/active_record/connection_adapters/abstract/database_statements.rb:135:in `exec_insert'
~.rvm/gems/ruby-2.6.6/gems/activerecord-6.0.3.2/lib/active_record/connection_adapters/postgresql/database_statements.rb:132:in `exec_insert'
~.rvm/gems/ruby-2.6.6/gems/activerecord-6.0.3.2/lib/active_record/connection_adapters/abstract/database_statements.rb:166:in `insert'
~.rvm/gems/ruby-2.6.6/gems/activerecord-6.0.3.2/lib/active_record/connection_adapters/abstract/query_cache.rb:22:in `insert'
~.rvm/gems/ruby-2.6.6/gems/activerecord-6.0.3.2/lib/active_record/persistence.rb:375:in `_insert_record'
~.rvm/gems/ruby-2.6.6/gems/activerecord-6.0.3.2/lib/active_record/persistence.rb:932:in `_create_record'
~.rvm/gems/ruby-2.6.6/gems/activerecord-6.0.3.2/lib/active_record/counter_cache.rb:166:in `_create_record'
~.rvm/gems/ruby-2.6.6/gems/activerecord-6.0.3.2/lib/active_record/locking/optimistic.rb:70:in `_create_record'
~.rvm/gems/ruby-2.6.6/gems/activerecord-6.0.3.2/lib/active_record/attribute_methods/dirty.rb:211:in `_create_record'
~.rvm/gems/ruby-2.6.6/gems/activerecord-6.0.3.2/lib/active_record/callbacks.rb:331:in `block in _create_record'
~.rvm/gems/ruby-2.6.6/gems/activesupport-6.0.3.2/lib/active_support/callbacks.rb:135:in `run_callbacks'
~.rvm/gems/ruby-2.6.6/gems/activesupport-6.0.3.2/lib/active_support/callbacks.rb:825:in `_run_create_callbacks'
~.rvm/gems/ruby-2.6.6/gems/activerecord-6.0.3.2/lib/active_record/callbacks.rb:331:in `_create_record'
~.rvm/gems/ruby-2.6.6/gems/activerecord-6.0.3.2/lib/active_record/timestamp.rb:110:in `_create_record'
~.rvm/gems/ruby-2.6.6/gems/bullet-6.1.0/lib/bullet/active_record60.rb:6:in `_create_record'
~.rvm/gems/ruby-2.6.6/gems/activerecord-6.0.3.2/lib/active_record/persistence.rb:905:in `create_or_update'
~.rvm/gems/ruby-2.6.6/gems/activerecord-6.0.3.2/lib/active_record/callbacks.rb:327:in `block in create_or_update'
~.rvm/gems/ruby-2.6.6/gems/activesupport-6.0.3.2/lib/active_support/callbacks.rb:135:in `run_callbacks'
~.rvm/gems/ruby-2.6.6/gems/activesupport-6.0.3.2/lib/active_support/callbacks.rb:825:in `_run_save_callbacks'
~.rvm/gems/ruby-2.6.6/gems/activerecord-6.0.3.2/lib/active_record/callbacks.rb:327:in `create_or_update'
~.rvm/gems/ruby-2.6.6/gems/activerecord-6.0.3.2/lib/active_record/timestamp.rb:128:in `create_or_update'
~.rvm/gems/ruby-2.6.6/gems/activerecord-6.0.3.2/lib/active_record/persistence.rb:470:in `save'
~.rvm/gems/ruby-2.6.6/gems/activerecord-6.0.3.2/lib/active_record/validations.rb:47:in `save'
~.rvm/gems/ruby-2.6.6/gems/activerecord-6.0.3.2/lib/active_record/transactions.rb:314:in `block in save'
~.rvm/gems/ruby-2.6.6/gems/activerecord-6.0.3.2/lib/active_record/transactions.rb:375:in `block in with_transaction_returning_status'
~.rvm/gems/ruby-2.6.6/gems/activerecord-6.0.3.2/lib/active_record/connection_adapters/abstract/database_statements.rb:280:in `block in transaction'
~.rvm/gems/ruby-2.6.6/gems/activerecord-6.0.3.2/lib/active_record/connection_adapters/abstract/transaction.rb:280:in `block in within_new_transaction'
~.rvm/gems/ruby-2.6.6/gems/activesupport-6.0.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
~.rvm/gems/ruby-2.6.6/gems/activesupport-6.0.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
~.rvm/gems/ruby-2.6.6/gems/activesupport-6.0.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
~.rvm/gems/ruby-2.6.6/gems/activesupport-6.0.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
~.rvm/gems/ruby-2.6.6/gems/activesupport-6.0.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
~.rvm/gems/ruby-2.6.6/gems/activerecord-6.0.3.2/lib/active_record/connection_adapters/abstract/transaction.rb:278:in `within_new_transaction'
~.rvm/gems/ruby-2.6.6/gems/activerecord-6.0.3.2/lib/active_record/connection_adapters/abstract/database_statements.rb:280:in `transaction'
~.rvm/gems/ruby-2.6.6/gems/activerecord-6.0.3.2/lib/active_record/transactions.rb:212:in `transaction'
~.rvm/gems/ruby-2.6.6/gems/activerecord-6.0.3.2/lib/active_record/transactions.rb:366:in `with_transaction_returning_status'
~.rvm/gems/ruby-2.6.6/gems/activerecord-6.0.3.2/lib/active_record/transactions.rb:314:in `save'
~.rvm/gems/ruby-2.6.6/gems/activerecord-6.0.3.2/lib/active_record/suppressor.rb:44:in `save'
~.rvm/gems/ruby-2.6.6/gems/globalize-5.3.0/lib/globalize/active_record/instance_methods.rb:164:in `block (2 levels) in save'
~.rvm/gems/ruby-2.6.6/gems/globalize-5.3.0/lib/globalize/active_record/instance_methods.rb:228:in `without_fallbacks'
~.rvm/gems/ruby-2.6.6/gems/globalize-5.3.0/lib/globalize/active_record/instance_methods.rb:163:in `block in save'
~.rvm/gems/ruby-2.6.6/gems/globalize-5.3.0/lib/globalize.rb:27:in `with_locale'
~.rvm/gems/ruby-2.6.6/gems/globalize-5.3.0/lib/globalize/active_record/instance_methods.rb:162:in `save'
~.rvm/gems/ruby-2.6.6/gems/activerecord-6.0.3.2/lib/active_record/persistence.rb:38:in `create'
~SandBox/Question-App/db/seeds/questions.rb:110:in `<main>'
~.rvm/gems/ruby-2.6.6/gems/bootsnap-1.4.7/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:55:in `load'
~.rvm/gems/ruby-2.6.6/gems/bootsnap-1.4.7/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:55:in `load'
~SandBox/Question-App/db/seeds/01_toolkits.rb:2:in `block in <main>'
~SandBox/Question-App/db/seeds/01_toolkits.rb:1:in `each'
~SandBox/Question-App/db/seeds/01_toolkits.rb:1:in `<main>'
~.rvm/gems/ruby-2.6.6/gems/bootsnap-1.4.7/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:55:in `load'
~.rvm/gems/ruby-2.6.6/gems/bootsnap-1.4.7/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:55:in `load'
~SandBox/Question-App/db/seeds.rb:4:in `block in <main>'
~SandBox/Question-App/db/seeds.rb:3:in `each'
~SandBox/Question-App/db/seeds.rb:3:in `<main>'
~.rvm/gems/ruby-2.6.6/gems/bootsnap-1.4.7/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:55:in `load'
~.rvm/gems/ruby-2.6.6/gems/bootsnap-1.4.7/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:55:in `load'
~.rvm/gems/ruby-2.6.6/gems/railties-6.0.3.2/lib/rails/engine.rb:559:in `load_seed'
~.rvm/gems/ruby-2.6.6/gems/activerecord-6.0.3.2/lib/active_record/tasks/database_tasks.rb:440:in `load_seed'
~.rvm/gems/ruby-2.6.6/gems/activerecord-6.0.3.2/lib/active_record/railties/databases.rake:331:in `block (2 levels) in <main>'
~SandBox/Question-App/lib/tasks/db/recreate.rake:23:in `block (2 levels) in <main>'
~.rvm/gems/ruby-2.6.6/gems/rake-13.0.1/exe/rake:27:in `<top (required)>'
~.rvm/gems/ruby-2.6.6/bin/ruby_executable_hooks:24:in `eval'
~.rvm/gems/ruby-2.6.6/bin/ruby_executable_hooks:24:in `<main>'

Any suggestion how to get array to work with Globalize? 🤔

stale commented

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.