В таблице клиентов активно имя поля. Подтверждает, как показано ниже в customer.rb:
validates :active, :presence => true
Вот код rspec для проверки поля short_name:
it "should be OK with duplicate short_name in different active status" do
customer = Factory(:customer, :active => false, :short_name => "test user")
customer1 = Factory.build(:customer, :active => true, :short_name => "Test user")
customer1.should be_valid
end
Проверка для короткого имени:
validates :short_name, :presence => true, :uniqueness => { :scope => :active }
Приведенный выше код вызывает ошибку:
1) Customer data integrity should be OK with duplicate short_name in different active status
Failure/Error: customer = Factory(:customer, :active => false, :short_name => "test user")
ActiveRecord::RecordInvalid:
Validation failed: Active can't be blank
# ./spec/models/customer_spec.rb:62:in `block (3 levels) in <top (required)>'
Похоже, что ложное значение, присвоенное активному полю, rspec считалось пустым или нулевым и не прошло проверку данных. Пытался использовать 0 для false, и это вызывает ту же ошибку. Случай rspec проходит при удалении проверки для поля active.