translator

Railsで配列のバリデーションを実装

カスタムバリデーションで実装する。

  • validate :メソッドで実装可能
  • ポイント :を忘れないように

   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と、共存可能


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
   

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

コメント

このブログの人気の投稿