Наличие модели rfq в приложении.Есть два поля.Одним из них является Need_report, который является логическим.Другой - report_language, который является строкой.Логика такова: если Need_report имеет значение true, тогда в report_language должна быть запись.В противном случае, если need_report, если false, report_language может быть пустым.Вот код в rfq.rb:
validates :need_report, :presence => true
validates_inclusion_of :need_report, :in => [true, false]
validates :report_language, :presence => {:if => :need_report?}
def need_report?
need_report
end
Однако следующий случай rspec завершился неудачей:
it "should be OK for nil report_language if need_report is false" do
rfq = Factory.build(:rfq, :need_report => false, :report_language => nil)
rfq.should be_valid
end
Ошибка в том, что rfq недействителен:
1) Rfq should be OK for nil report_language if need_report is false
Failure/Error: rfq.should be_valid
expected valid? to return true, got false
# ./spec/models/rfq_spec.rb:57:in `block (2 levels) in <top (required)>'
Этот случай может пройти, если «validates: need_report, :sence => true» удалено из модели.Похоже, что если Need_report верен, то report_language не может быть пустым.
Есть какие-нибудь мысли по поводу проблемы?Спасибо.