paperclipでlocaleに関するエラーが出たので対処
Rails 4.0.3
paperclip 4.1.1
ファイルアップロードのライブラリとしてpaperclipを使っているのですが、 ファイルサイズについてのバリデーションをModelに加え、テストも加えたのですが、どうにもlocaleファイルが無いよ、とテストを走らせるとエラーが出てしまいました。
Failure/Error: it { should validate_attachment_size(:avatar).
I18n::MissingTranslationData:
translation missing: ja.number.human.storage_units.format
で、ソースを追うと、enについてのlocale fileしか無いのでエラーが出ている様子
github
#paperclip/lib/paperclip/locales/en.yml en: errors: messages: in_between: "must be in between %{min} and %{max}" spoofed_media_type: "has an extension that does not match its contents" number: human: storage_units: format: "%n %u" units: byte: one: "Byte" other: "Bytes" kb: "KB" mb: "MB" gb: "GB" tb: "TB"
まあ、特にenでも問題なさそうなんで、validates_attachment_size にlocaleオプションでenを設定して、解決しました。
#Model
validates_attachment_size :avatar, less_than: 1.megabytes
↓
#Model
validates_attachment_size :avatar, less_than: 1.megabytes, locale: :en
追記:
https://github.com/svenfuchs/rails-i18n/
このへん入れるだけでも、localeオプション無しでエラーでなくなります。
#Model
validates_attachment_size :avatar, less_than: 1.megabytes