我一直在建立一个跟踪作者版税的系统。假设作者的特许权使用费率基于销售额:0 - 5000,他们说,10%。 5001 - 10,000他们得到15%。我的问题是,如何告诉Rails最终规则应该是10,001 - 无穷大?现在,这表示在royalty_rules表中,其中包含较低和较高的列以及每个royalty_rule belongs_to:contract和每个合约:has_many royalty_rules。
我对日期有类似的问题......我在日期中列出了开始和结束时间,有时候,我不希望合同有结束日期。
答案 0 :(得分:3)
虽然Ruby没有Infinity
或-Infinity
的常量,但它确实知道了这些概念,你可以自己创建它们:
irb> Numeric::Infinity = 1.0/0
#=> Infinity
irb> range = 10001..Numeric::Infinity
#=> 10001..Infinity
irb> range.include?( 234234234234134134134 )
#=> true
编辑:实际上,Ruby 1.9.2似乎添加了Float::INFINITY
,所以如果你处于领先优势,你可以使用它。
答案 1 :(得分:2)
以下是关于使用Infinity in Rails
的小教程答案 2 :(得分:0)
我建议允许上限列在数据库中取NULL。这将映射到Rails中的nil
,并且很容易通过nil?
或nil
为“falsey”的事实进行测试。