Edited at

Rails 配列のバリデーション

More than 1 year has passed since last update.


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



最後に

あんまりこの手の情報がなかったので、役に立てば.......