섭사장의 블로그

Ruby on Rails Model validation

February 06, 2019 | 2 Minute Read

Model validation

Ruby on Rails의 MVC 패턴 중 M에 해당하는 Model에서는 data validation을 적용하게 된다. Database에 data를 저장 혹은 업데이트하기 전, 적절한 data인지 확인한다. 이 때, validation을 통과하지 못하면 Query를 보내지 않는다.

Ruby on Rails를 사용하며 자주 활용한 Model validation을 모아보았다.

required validation

validates :title, :description, :tags, presence: true

uniqueness validation

validates :sequence, uniqueness: true
# case insensitive
validates :permalink, uniquness: { case_sensitive: false }

length validation

# 최단
validates :title, length: { minimum: 5 }
# 최장
validates :content, length: { maximum: 40 }
# 범위
validates :phone, length: { in: 10.. 15 }
# 딱 정해진 길이
validates :pin, length: { is: 6 }

format validation

# 숫자
validates :amount, numericality: true
# 정수
validates :sequence, numericality: { only_integer: true }
# http 혹은 https로 시작(allow nil 포함)
validates :url,
  format: { with: URI.regexp(%w(http https)) },
    allow_nil: true
# 유효한 email 주소
EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
  validates :email, 
    length: { in: 6..50 }, 
    format: { with: EMAIL_REGEX }

conditional validation

validates :url,
  format: { with: URI.regexp(%w(http https)) },
    if: Proc.new { |company| !company.url.blank? }

inclusion validation

validates :language, inclusion: { in: %w(ruby phtyon java c) }

참고