Ich benutze Rails 4.2.7 mit PostGres 9.5. Ich bekomme einen seltsamen Fehler, wenn ich überprüfe, ob mein Modell gültig ist. Ich habe ein Namensfeld, definiert in meinem PostGres db als solche ...Getting "Fehler bei der Verarbeitung: (ArgumentError) ungültige Byte-Sequenz in UTF-8" bei der Überprüfung "gültig?" Methode von meinem Modell
name | character varying |
Allerdings, wenn ich diesen Wert in meinem Modell speichern (einige Dinge können nicht direkt von meinem Editor ausschneiden und einfügen ...)
Beth Ordu?±a
Und ich laufe dann
if !insert.valid?
auf einem Modell mit den folgenden Validierungsregeln
class MyObjectTime < ActiveRecord::Base
belongs_to :my_object
has_one :linked_my_object, class_name: 'MyObject'
belongs_to :state
belongs_to :country
validates :time_in_ms, numericality: { greater_than: 0 }
validates :age, numericality: { greater_than: 0 }, :allow_blank => validates :name, presence: true, unless: :first_name_last_name_empty_and_user_id_is_not?
attr_accessor :name_city, :time_str, :hometown, :division, :age_group_rank_str, :gender_rank_str, :overall_rank_str
ich den Fehler unten bekommen ...
Error during processing: (ArgumentError) invalid byte sequence in UTF-8
/Users/davea/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.7.1/lib/active_support/core_ext/object/blank.rb:117:in `==='
/Users/davea/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.7.1/lib/active_support/core_ext/object/blank.rb:117:in `blank?'
/Users/davea/.rvm/gems/ruby-2.3.0/gems/activemodel-4.2.7.1/lib/active_model/validator.rb:150:in `block in validate'
/Users/davea/.rvm/gems/ruby-2.3.0/gems/activemodel-4.2.7.1/lib/active_model/validator.rb:148:in `each'
/Users/davea/.rvm/gems/ruby-2.3.0/gems/activemodel-4.2.7.1/lib/active_model/validator.rb:148:in `validate'
/Users/davea/.rvm/gems/ruby-2.3.0/gems/activerecord-4.2.7.1/lib/active_record/validations/presence.rb:5:in `validate'
/Users/davea/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.7.1/lib/active_support/callbacks.rb:455:in `public_send'
/Users/davea/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.7.1/lib/active_support/callbacks.rb:455:in `block in make_lambda'
/Users/davea/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.7.1/lib/active_support/callbacks.rb:182:in `block in conditional'
/Users/davea/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.7.1/lib/active_support/callbacks.rb:504:in `block in call'
/Users/davea/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.7.1/lib/active_support/callbacks.rb:504:in `each'
/Users/davea/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.7.1/lib/active_support/callbacks.rb:504:in `call'
/Users/davea/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.7.1/lib/active_support/callbacks.rb:92:in `__run_callbacks__'
/Users/davea/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.7.1/lib/active_support/callbacks.rb:778:in `_run_validate_callbacks'
/Users/davea/.rvm/gems/ruby-2.3.0/gems/activemodel-4.2.7.1/lib/active_model/validations.rb:399:in `run_validations!'
/Users/davea/.rvm/gems/ruby-2.3.0/gems/activemodel-4.2.7.1/lib/active_model/validations/callbacks.rb:113:in `block in run_validations!'
/Users/davea/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.7.1/lib/active_support/callbacks.rb:88:in `__run_callbacks__'
/Users/davea/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.7.1/lib/active_support/callbacks.rb:778:in `_run_validation_callbacks'
/Users/davea/.rvm/gems/ruby-2.3.0/gems/activemodel-4.2.7.1/lib/active_model/validations/callbacks.rb:113:in `run_validations!'
/Users/davea/.rvm/gems/ruby-2.3.0/gems/activemodel-4.2.7.1/lib/active_model/validations.rb:338:in `valid?'
/Users/davea/.rvm/gems/ruby-2.3.0/gems/activerecord-4.2.7.1/lib/active_record/validations.rb:58:in `valid?'
/Users/davea/Documents/workspace/myproject/app/services/abstract_import_service.rb:154:in `block (2 levels) in save_my_object_time_results'
/Users/davea/Documents/workspace/myproject/app/services/abstract_import_service.rb:152:in `each'
/Users/davea/Documents/workspace/myproject/app/services/abstract_import_service.rb:152:in `block in save_my_object_time_results'
/Users/davea/.rvm/gems/ruby-2.3.0/gems/activerecord-4.2.7.1/lib/active_record/connection_adapters/abstract/database_statements.rb:213:in `block in transaction'
/Users/davea/.rvm/gems/ruby-2.3.0/gems/activerecord-4.2.7.1/lib/active_record/connection_adapters/abstract/transaction.rb:184:in `within_new_transaction'
/Users/davea/.rvm/gems/ruby-2.3.0/gems/activerecord-4.2.7.1/lib/active_record/connection_adapters/abstract/database_statements.rb:213:in `transaction'
/Users/davea/.rvm/gems/ruby-2.3.0/gems/activerecord-4.2.7.1/lib/active_record/transactions.rb:220:in `transaction'
/Users/davea/Documents/workspace/myproject/app/services/abstract_import_service.rb:149:in `save_my_object_time_results'
/Users/davea/Documents/workspace/myproject/app/services/abstract_import_service.rb:92:in `process_my_object_data'
/Users/davea/Documents/workspace/myproject/app/services/active_com_my_object_finder_service.rb:119:in `block in process_my_object_link'
/Users/davea/Documents/workspace/myproject/app/services/active_com_my_object_finder_service.rb:109:in `each'
/Users/davea/Documents/workspace/myproject/app/services/active_com_my_object_finder_service.rb:109:in `process_my_object_link'
/Users/davea/Documents/workspace/myproject/app/services/abstract_my_object_finder_service.rb:29:in `block in process_data'
/Users/davea/Documents/workspace/myproject/app/services/abstract_my_object_finder_service.rb:28:in `each'
/Users/davea/Documents/workspace/myproject/app/services/abstract_my_object_finder_service.rb:28:in `process_data'
/Users/davea/Documents/workspace/myproject/app/services/run_crawlers_service.rb:18:in `block in run_all_crawlers'
/Users/davea/.rvm/gems/ruby-2.3.0/gems/activerecord-4.2.7.1/lib/active_record/relation/delegation.rb:46:in `each'
/Users/davea/.rvm/gems/ruby-2.3.0/gems/activerecord-4.2.7.1/lib/active_record/relation/delegation.rb:46:in `each'
/Users/davea/Documents/workspace/myproject/app/services/run_crawlers_service.rb:5:in `run_all_crawlers'
Wie vermeide ich diesen Fehler, ohne den Inhalt des Strings zu ändern? Wenn PostGres diese Daten speichern kann, ist das die einzige Sache, die mir wichtig ist. Ich weiß nicht im Voraus, welche Art von Codierung der Wert von "name" sein wird, wenn ich darauf schreibe. Ich kann den Datentyp PostGres-Spalte bei Bedarf ändern.