Я новичок в рельсах и пытаюсь написать свое первое приложение. У меня есть таблица со столбцами order_size: целое число и цена: десятичное (8,5). Столбец цены содержит цены на валюту, поэтому он должен быть очень точным, если вам интересно. Я пытаюсь написать тесты, чтобы убедиться, что цена и order_size являются положительными числами, но что бы я ни делал, они не пройдут.
Вот тесты Rspec
it "should require a positive order size" do
@attr[:order_size] = -23
@user.orders.create!(@attr).should_not be_valid
end
it "should require a positive price" do
@attr[:price] = -1.2908
@user.orders.create!(@attr).should_not be_valid
end
Вот валидации класса Order
validates_presence_of :user_id
validates_numericality_of :order_size, :greater_than => 0,
:only_integer => true
validates_numericality_of :price, :greater_than => 0
Вот результаты теста
Failures:
1) Order validations should require a positive order size
Failure/Error: @user.orders.create!(@attr).should_not be_valid
ActiveRecord::RecordInvalid:
Validation failed: Order size must be greater than 0
# ./spec/models/order_spec.rb:39:in `block (3 levels) in <top (required)>'
2) Order validations should require a positive price
Failure/Error: @user.orders.create!(@attr).should_not be_valid
ActiveRecord::RecordInvalid:
Validation failed: Price must be greater than 0
# ./spec/models/order_spec.rb:44:in `block (3 levels) in <top (required)>'
Что именно здесь происходит? Я даже пытался запустить тест, утверждая, что они должны быть be_valid, но они все равно не работают. Любая помощь будет оценена.