我正在處理一個應用程序,我正在輸入多個價格範圍。我想驗證價格範圍以防止它與另一個價格範圍重疊。我知道如何檢查兩個數組是否重疊或沒有,例如,驗證價格範圍重疊
a = [1.0, 2.0]
b = [2.0, 3.0]
a & b #=> true
我有兩個字段price_start和price_end,所以這兩個領域之間沒有價格區間應與其他
重疊,但在這裏它的一個範圍,例如$ 1.0 - $ 10.0然後下一個$ 10.1到$ 20,我們如何實現這個?請幫忙!感謝
我正在處理一個應用程序,我正在輸入多個價格範圍。我想驗證價格範圍以防止它與另一個價格範圍重疊。我知道如何檢查兩個數組是否重疊或沒有,例如,驗證價格範圍重疊
a = [1.0, 2.0]
b = [2.0, 3.0]
a & b #=> true
我有兩個字段price_start和price_end,所以這兩個領域之間沒有價格區間應與其他
重疊,但在這裏它的一個範圍,例如$ 1.0 - $ 10.0然後下一個$ 10.1到$ 20,我們如何實現這個?請幫忙!感謝
你可以寫一個自定義的驗證這樣的:
validates :price_range_must_not_overlap
private
def price_ranges_must_overlap
range = (price_start..price_end)
if self.class.
where('id <> ?', self.id)
where('(price_start BETWEEN :price_start AND :price_end) OR (price_end BETWEEN :price_start AND :price_end)',
{ :price_start => price_start,
:price_end => price_end }).any?
errors.add(:base, "Price range overlaps with an existing price range")(b)
end
end
取景條件可能被提取到一個範圍。
瞭解更多有關此內容的Rails指南:http://guides.rubyonrails.org/active_record_validations.html#custom-methods
感謝您的回答,但我不希望價格範圍重疊。此外它不檢查價格範圍是否與任何現有記錄重疊 – RSB 2014-09-24 07:32:58
感謝您的答案,你能告訴我如何使用它與MongoDB,我使用的是mongoid。 – RSB 2014-09-24 09:17:27
@RSB:如果你告訴那個前期的話,會很好... – spickermann 2014-09-24 10:20:50
人們應該嘗試回答這個問題,而不是downvoting的! – RSB 2014-09-24 07:34:16