Използвам Ruby on Rails 3.0.10, RSpec 2 и FactoryGirl. Имам следния сценарий:
Във файла models/user_spec.rb
, който имам
describe User do
let(:user) { Factory(:user) }
it "should have a 'registered' authorization do
user.authorization.should == "registered"
end
end
Във файла factories/user.rb
, който имам
FactoryGirl.define do
factory :user, :class => User do |user|
user.authorization 'registered'
end
end
Във файла user.rb
имам:
class User < ActiveRecord::Base
DEFAULT_AUTHORIZATION = 'registered'
validates :authorization,
:inclusion => {
:in => Authorization.all.map(&:name),
:message => "authorization is not allowed"
},
:presence => true
before_validation :fill_user_create, :on => :create
private
def fill_user_create
self.authorization = Authorization::DEFAULT_AUTHORIZATION
end
end
Когато изпълня командата rspec
, получавам следната грешка:
User should have a default 'registered' Authorization
Failure/Error: let(:user) { Factory(:user) }
ActiveRecord::RecordInvalid:
Validation failed: Users authorization is not allowed
Какъв точно е проблемът и как мога да го разреша?
BTW: Във файла models/user_spec.rb
мога да използвам нещо като следното
let(:user) { User.create }
и ще работи, но предпочитам да използвам скъпоценния камък FactoryGirl. Какво съветвате?
self.authorization = Authorization::DEFAULT_AUTHORIZATION
- person eugen   schedule 16.09.2011