Advertisement
saasbook

validation_example.rb

Mar 1st, 2014
503
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 1.07 KB | None | 0 0
  1. class Movie < ActiveRecord::Base
  2.   def self.all_ratings ; %w[G PG PG-13 R NC-17] ; end #  shortcut: array of strings
  3.   validates :title, :presence => true
  4.   validates :release_date, :presence => true
  5.   validate :released_1930_or_later # uses custom validator below
  6.   validates :rating, :inclusion => {:in => Movie.all_ratings},
  7.     :unless => :grandfathered?
  8.   def released_1930_or_later
  9.     errors.add(:release_date, 'must be 1930 or later') if
  10.       release_date && release_date < Date.parse('1 Jan 1930')
  11.   end
  12.   @@grandfathered_date = Date.parse('1 Nov 1968')
  13.   def grandfathered?
  14.     release_date && release_date >= @@grandfathered_date
  15.   end
  16. end
  17. # try in console:
  18. m = Movie.new(:title => '', :rating => 'RG', :release_date => '1929-01-01')
  19. # force validation checks to be performed:
  20. m.valid?  # => false
  21. m.errors[:title] # => ["can't be blank"]
  22. m.errors[:rating] # => ["is not included in the list"]
  23. m.errors[:release_date] # => ["must be 1930 or later"]
  24. m.errors.full_messages # => ["Title can't be blank", "Rating is not
  25.   included in the list", "Release date must be 1930 or later"]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement