Advertisement
saasbook

validation_example.rb

Jan 9th, 2013
280
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 1.04 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.       self.release_date < Date.parse('1 Jan 1930')
  11.   end
  12.   @@grandfathered_date = Date.parse('1 Nov 1968')
  13.   def grandfathered? ; self.release_date >= @@grandfathered_date ; end
  14. end
  15. # try in console:
  16. m = Movie.new(:title => '', :rating => 'RG', :release_date => '1929-01-01')
  17. # force validation checks to be performed:
  18. m.valid?  # => false
  19. m.errors[:title] # => ["can't be blank"]
  20. m.errors[:rating] # => ["is not included in the list"]
  21. m.errors[:release_date] # => ["must be 1930 or later"]
  22. m.errors.full_messages # => ["Title can't be blank", "Rating is not
  23.   included in the list", "Release date must be 1930 or later"]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement