Ruby on Rails

トップ > チップス > Ruby on Rails
2015-04-29, rails

ActiveRecordのバリデーション

バイナリ型の列(picture)へのデータ登録を必須にしたく、以下のようなバリデーションを追加したところ、 createを呼ぶ度に「invalid byte sequence..」というエラーが出るようになりました。

  validates :picture, presence: true
ArgumentError: invalid byte sequence in UTF-8

結局、validatesを外して対応したのですが、このままだと他のあらゆる箇所でnilチェックが必要になってしまい嬉しくありません。何か良い方法は…。

追記:
Stackoverflowで解決しました。File.readにエンコードを付けたらよかったんですね。なるほど。

Foo.create(b:File.read('b.jpg', encoding: 'binary'))
Foo.create(b:File.binread('b.jpg'))

参考URL

この記事は役に立ちましたか?