2016-12-08 4 views
0

私はPostGres 9.5でRails 4.2.7を使用しています。私のモデルが有効かどうかをチェックすると、私は奇妙なエラーが発生しています。私のような私のPostgresのDBに定義された名前のフィールドを、...持って"valid?"チェック時に "処理中にエラーが発生しました:(ArgumentError)UTF-8の無効なバイトシーケンス"メソッド

しかし
name    | character varying   | 

、私は私のモデルにこの値を保存するときに(いくつかのものはカットし、私の編集者から権利貼り付けるないかもしれません...)

Beth Ordu?±a 

そして私は、次の検証ルールをモデルに

 if !insert.valid? 

を実行

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 

私は、文字列の内容を変更せずに、このエラーを回避するにはどうすればよい

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' 

...以下のエラーを取得しますか? PostGresがこのデータを保存することができれば、それが私が気にしている唯一のことです。私はそれに書き込むときに、どのようなエンコーディングのタイプが "name"の値になるかを事前に知っていません。必要に応じて、PostGres列のデータ型を変更できます。

答えて

0

UTF-8エンコーディングでデータベースを作成しました。詳細はこちらPostgreSQL Doc

charlock_holmes gemを文字エンコーディングの検出と変換に使用するか、データベースに適切なエンコーディングを選択することができます。

関連する問題