以下で試しているようなカスタムバリデーターを書きたいと思います
ActiveRecord::Base.class_eval do
def self.validates_characters(*attr_names)
validates_each(attr_names) do |record, attr_name, value|
unless value.nil?
regex = /^[[a-zA-Z\][0-9]\]]\\$@^`,|%;.~()\/{}:?\[=\]\+\-_#!<&\s]*$/
record.errors.add(attr_name, 'invalid characters') unless regex.match(value)
end
end
end
end
この正規表現 =>/^[[a-zA-Z\][0-9]\]]\\$@^`,|%;.~()\/{}:?\[=\]\+\-_#!<&\s]*$/
を rubular で試しましたが、いくつかエラーがあります。
この文字のみを許可したい:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
1234567890
$@^`,|%;.~()/\{}:?[]=-+_#!<>& and spaces
したがって、この文字列は無効です =>" © gfdgfd 0543"
これを行うより良い方法はありますか??