Я использую 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
В чем именно заключается проблема и как ее решить?
Кстати: в файле models/user_spec.rb
я могу использовать что-то вроде следующего
let(:user) { User.create }
и это сработает, но я предпочитаю использовать гем FactoryGirl. Что вы посоветуете?
self.authorization = Authorization::DEFAULT_AUTHORIZATION
- person eugen   schedule 16.09.2011