lulu

【Rails】独自(オリジナル)のvalidation(バリデーション)を追加する方法

やること

RailsのModelに独自(オリジナル)のバリデーションを追加する

ver

  • ruby 2.5.1
  • Rails 6.0.3

テストという文字列をふくまないようにするvalidation

class User < ApplicationRecord
  validate do |user|
    if user.name.include?("テスト")
      user.errors[:name] << "テスト should not be used"
    end
  end
end

実験

irb(main):001:0> user = User.new(name: "テスト", age: 11);
   (0.8ms)  SELECT sqlite_version(*)
=> #<User id: nil, age: 11, name: "テスト", created_at: nil, updated_at: nil>
irb(main):002:0> user.valid?
=> false
irb(main):003:0> user2 = User.new(name: "あああ", age: 11);
=> #<User id: nil, age: 11, name: "あああ", created_at: nil, updated_at: nil>
irb(main):004:0> user2.valid?
=> true