Ruby on rails 验证价格范围重叠
我正在开发一个输入多个价格范围的应用程序。我想验证价格范围,以防止它与其他价格范围重叠。我知道如何检查两个数组是否重叠,例如Ruby on rails 验证价格范围重叠,ruby-on-rails,ruby,ruby-on-rails-3,validation,rails-models,Ruby On Rails,Ruby,Ruby On Rails 3,Validation,Rails Models,我正在开发一个输入多个价格范围的应用程序。我想验证价格范围,以防止它与其他价格范围重叠。我知道如何检查两个数组是否重叠,例如 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
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
验证:价格范围不能重叠
私有的
def价格范围必须重叠
范围=(价格开始..价格结束)
如果你是自学班。
其中('id?',self.id)
其中(‘(价格开始于:价格开始于:价格开始于:价格结束于)或(价格结束于:价格开始于:价格结束于:价格结束于)’,
{:price\u start=>price\u start,
:price\u end=>price\u end})。有吗?
错误。添加(:base,“价格范围与现有价格范围重叠”)(b)
结束
结束
查找器条件可能被提取到范围中
在Rails指南中了解更多信息:人们应该尝试回答问题,而不是投反对票!