I have a problem with a recent change to one of my models when created
via Factory.create.
class User < ActiveRecord::Base
attr_accessor :tc_check
validates :tc_check, :presence => true, :acceptance => true
…
end
The following definition fails, when calling
Factory.create(:valid_user)
Factory.define :valid_user, :class => User do |u|
u.email ‘[email protected]’
u.phone_number ‘(925) 555-1212’
u.active true
u.tc_check true
end
It falls over on validation - Validation failed: Tc check must be
accepted (ActiveRecord::RecordInvalid)
I’ve also tried setting it when called create like
Factory.create(:valid_user, :tc_check => true) which has the same
result.
Any way of setting this before validation so that I can get it to pass
the tests?
Thanks
Adam
adam
2
On 2011-01-17, at 9:51 AM, adam wrote:
It falls over on validation - Validation failed: Tc check must be
accepted (ActiveRecord::RecordInvalid)
I’ve also tried setting it when called create like
Factory.create(:valid_user, :tc_check => true) which has the same
result.
What happens if you do this:
u = Factory.build(:valid_user)
u.tc_check = true
u.save!
Luke
adam
3
Thanks, but I have tried that - I get the same result.
Validation seems to get called on build as well as create.
adam
4
Thank you ! that was the problem… 
adam
5
OK, I think I have the answer.
The docs say:
http://api.rubyonrails.org/classes/ActiveModel/Validations/HelperMethods.html#method-i-validates_acceptance_of
… The default value is a string 1, which makes it easy to relate to an
HTML checkbox.
So simply change your factory line to this:
Factory.create(:valid_user, :tc_check => “1”)
Luke