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
この記事は役に立ちましたか?
- EnglishWorm.com
- SinglesFan.com
- LmLab.net
- サイトマップ
- 運営者について