1
我的模型有關於其相關模型之一的驗證。由於此驗證,我的rspec測試模型失敗。由於關聯模型的驗證,對activerecord模型的Rspec shoulda匹配器測試失敗
describe NewOfferRange do
it { is_expected.to validate_presence_of(:new_offer) }
it { is_expected.to validate_presence_of(:from) }
it { is_expected.to validate_presence_of(:to) }
end
class NewOfferRange < ApplicationRecord
validates :new_offer, :from, :to, presence: true
validate :unique_for_date_ranges
delegate :hotel, to: :new_offer
def unique_for_date_ranges
if hotel.new_offers.joins(:new_offer_ranges)
.where('new_offer_ranges.from < ? AND new_offer_ranges.to > ?', to, from)
.where.not(new_offer_ranges: { id: id })
.count
.positive?
errors.add(:base, 'Ya hay otra oferta para esas fechas.')
end
end
這些測試,因爲試圖運行驗證失敗時,它說new_offer is nil
爲new_offer_range
。
我還爲我的模型工廠使用了FactoryGirl,該工廠已爲new_offer_range
定義了一個有效且具有相應參考的工廠。 我可以不知何故告訴應該匹配器使用該工廠,以免得到這個驗證錯誤?
謝謝,只是在閱讀本答案之前嘗試過,並且即將發佈。 –