aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/examples/validation.rb
diff options
context:
space:
mode:
Diffstat (limited to 'activerecord/examples/validation.rb')
-rw-r--r--activerecord/examples/validation.rb85
1 files changed, 0 insertions, 85 deletions
diff --git a/activerecord/examples/validation.rb b/activerecord/examples/validation.rb
deleted file mode 100644
index e6a448afb8..0000000000
--- a/activerecord/examples/validation.rb
+++ /dev/null
@@ -1,85 +0,0 @@
-require File.dirname(__FILE__) + '/shared_setup'
-
-logger = Logger.new(STDOUT)
-
-# Database setup ---------------
-
-logger.info "\nCreate tables"
-
-[ "DROP TABLE people",
- "CREATE TABLE people (id int(11) auto_increment, name varchar(100), pass varchar(100), email varchar(100), PRIMARY KEY (id))"
-].each { |statement|
- begin; ActiveRecord::Base.connection.execute(statement); rescue ActiveRecord::StatementInvalid; end # Tables doesn't necessarily already exist
-}
-
-
-# Class setup ---------------
-
-class Person < ActiveRecord::Base
- # Using
- def self.authenticate(name, pass)
- # find_first "name = '#{name}' AND pass = '#{pass}'" would be open to sql-injection (in a web-app scenario)
- find_first [ "name = '%s' AND pass = '%s'", name, pass ]
- end
-
- def self.name_exists?(name, id = nil)
- if id.nil?
- condition = [ "name = '%s'", name ]
- else
- # Check if anyone else than the person identified by person_id has that user_name
- condition = [ "name = '%s' AND id <> %d", name, id ]
- end
-
- !find_first(condition).nil?
- end
-
- def email_address_with_name
- "\"#{name}\" <#{email}>"
- end
-
- protected
- def validate
- errors.add_on_empty(%w(name pass email))
- errors.add("email", "must be valid") unless email_address_valid?
- end
-
- def validate_on_create
- if attribute_present?("name") && Person.name_exists?(name)
- errors.add("name", "is already taken by another person")
- end
- end
-
- def validate_on_update
- if attribute_present?("name") && Person.name_exists?(name, id)
- errors.add("name", "is already taken by another person")
- end
- end
-
- private
- def email_address_valid?() email =~ /\w[-.\w]*\@[-\w]+[-.\w]*\.\w+/ end
-end
-
-# Usage ---------------
-
-logger.info "\nCreate fixtures"
-david = Person.new("name" => "David Heinemeier Hansson", "pass" => "", "email" => "")
-unless david.save
- puts "There was #{david.errors.count} error(s)"
- david.errors.each_full { |error| puts error }
-end
-
-david.pass = "something"
-david.email = "invalid_address"
-unless david.save
- puts "There was #{david.errors.count} error(s)"
- puts "It was email with: " + david.errors.on("email")
-end
-
-david.email = "david@loudthinking.com"
-if david.save then puts "David finally made it!" end
-
-
-another_david = Person.new("name" => "David Heinemeier Hansson", "pass" => "xc", "email" => "david@loudthinking")
-unless another_david.save
- puts "Error on name: " + another_david.errors.on("name")
-end \ No newline at end of file