jnunemaker-validatable-1.8.4 の validates_length_of がマルチバイト文字に対応していないようです。
shapadoはactiverecordのvalidates_length_ofではなくjnunemaker-validatableのvalidates_length_ofを使用していて、
jnunemaker-validatable の validates_length_of が文字数をlengthでカウントしていました。
以下のように修正すると日本語でも正しく文字数を扱うことができるようになりました。
validates_length_of.rb.orig 2011-05-13 16:41:05.000000000 +0900
—– validates_length_of.rb 2011-05-13 16:42:28.000000000 +0900
*****
20,30
value = ‘’
end
! valid &&= value.length <= maximum unless maximum.nil?
! valid &&= value.length >= minimum unless minimum.nil?
! valid &&= value.length == is unless is.nil?
! valid &&= within.include?(value.length) unless within.nil?
valid
end
end
! end
\ No newline at end of file
—– 20,31 ——
value = ‘’
end
! length = value.split(//).length
! valid &&= length <= maximum unless maximum.nil?
! valid &&= length >= minimum unless minimum.nil?
! valid &&= length == is unless is.nil?
! valid &&= within.include?(length) unless within.nil?
valid
end
end
! end






All Shapado.com content and data are available under the
validates_length_of :title, :minimum => 5, :maximum => 100, :message => lambda { I18n.t("questions.model.messages.title_too_long") }