#Railsで配列のバリデーションを実装
カスタムバリデーションで実装する。
validate :メソッド
で実装可能
ポイント :を忘れないように
XXX.rb
validate :tag_list_tag_validation
def tag_list_tag_validation
tag_validation = tag_list #validatesの時と違って、:tag_listとしないところを注意
tag_validation.split(",")
if tag_validation.length < 1
errors.add(:tag_list, "タグを入力してください")
end
if tag_validation.length < 2
errors.add(:tag_list, "タグは2個以上入力してください")
end
if tag_validation.length >5
errors.add(:tag_list, "タグは5個までです")
end
end
##個人的に
rubyのsplitメソッドでパラメータから送られてきた,区切りの文字列
を配列化するにあたり、一度、パラメータを変数に入れてから、.split
としないと、配列化できないところで、ハマった。
##補足
validatesと、共存可能
例
XX.rb
validates :tag_list,presence :true
validate :tag_list_tag_validation
def tag_list_tag_validation
tag_validation = tag_list #validatesの時と違って、:tag_listとしないところを注意
tag_validation.split(",")
if tag_validation.length < 1
errors.add(:tag_list, "タグを入力してください")
end
if tag_validation.length < 2
errors.add(:tag_list, "タグは2個以上入力してください")
end
if tag_validation.length >5
errors.add(:tag_list, "タグは5個までです")
end
end
##最後に
あんまりこの手の情報がなかったので、役に立てば.......