Skip to content

Commit

Permalink
Added the option to specify the acceptance string in validates_accept…
Browse files Browse the repository at this point in the history
…ance_of rails#1106 [caleb@aei-tech.com]

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1188 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
  • Loading branch information
dhh committed Apr 17, 2005
1 parent 1546688 commit d5b67ed
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 3 deletions.
2 changes: 2 additions & 0 deletions activerecord/CHANGELOG
@@ -1,5 +1,7 @@
*SVN*

* Added the option to specify the acceptance string in validates_acceptance_of #1106 [caleb@aei-tech.com]

* Added acts_as_nested_set #1000 [wschenk]. Introduction:

This acts provides Nested Set functionality. Nested Set is similiar to Tree, but with
Expand Down
8 changes: 5 additions & 3 deletions activerecord/lib/active_record/validations.rb
Expand Up @@ -291,16 +291,18 @@ def validates_confirmation_of(*attr_names)
# Configuration options:
# * <tt>message</tt> - A custom error message (default is: "can't be empty")
# * <tt>on</tt> - Specifies when this validation is active (default is :save, other options :create, :update)
# * <tt>accept</tt> - Specifies value that is considered accepted. The default value is a string "1", which
# makes it easy to relate to an HTML checkbox.
#
# NOTE: The agreement is considered valid if it's set to the string "1". This makes it easy to relate it to an HTML checkbox.

def validates_acceptance_of(*attr_names)
configuration = { :message => ActiveRecord::Errors.default_error_messages[:accepted], :on => :save, :allow_nil => true }
configuration = { :message => ActiveRecord::Errors.default_error_messages[:accepted], :on => :save, :allow_nil => true, :accept => "1" }
configuration.update(attr_names.pop) if attr_names.last.is_a?(Hash)

attr_accessor *attr_names

validates_each(attr_names,configuration) do |record, attr_name, value|
record.errors.add(attr_name, configuration[:message]) unless value == "1"
record.errors.add(attr_name, configuration[:message]) unless value == configuration[:accept]
end
end

Expand Down
11 changes: 11 additions & 0 deletions activerecord/test/validations_test.rb
Expand Up @@ -189,6 +189,17 @@ def test_eula
assert t.save
end

def test_terms_of_service_agreement_with_accept_value
Topic.validates_acceptance_of(:terms_of_service, :on => :create, :accept => "I agree.")

t = Topic.create("title" => "We should be confirmed", "terms_of_service" => "")
assert !t.save
assert_equal "must be accepted", t.errors.on(:terms_of_service)

t.terms_of_service = "I agree."
assert t.save
end

def test_validate_presences
Topic.validates_presence_of(:title, :content)

Expand Down

0 comments on commit d5b67ed

Please sign in to comment.