Help us understand the problem. What is going on with this article?

Rails 配列のバリデーション

More than 3 years have 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

最後に

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

NishidaRyu416
大学生&TransX株式会社のCEO兼エンジニアです。
https://twovit.com/users/ryu
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away