Rails 3 - 将整数的一部分与其他整数进行比较

时间:2012-10-15 10:45:49

标签: ruby-on-rails ruby ruby-on-rails-3 integer

我现在用Ruby on Rails工作了将近4周,所以请考虑我作为初学者。

执行条件查找查询时,我需要将整数的一部分(放在字符串中)与另一个整数进行比较。

@invs = Inv.find(:all, :conditions => {:cnr => INTEGER_TO_BE_COMPARED_TO })

好吧,我找到了一种方法来获取整数的某个部分,并编写了以下方法:

def get_part_of_int
    @r = Integer((@cnr % 10000000)/100000.0)
    @r = "%02d" % @r
    @r.to_s
end

这应该从@r = 01

中提供输出@cnr = 40138355

目标只显示invs,例如01作为第二和第三位。

我正在使用:
Rails 3.2.8
Ruby 1.9.3p194

提前谢谢大家。

==编辑:==
我意识到我的帖子中没有问号。而且有一些混乱。

列名cnr的值应该被剥离到第2和第3位,并与字符串进行比较,例如01
谢谢@Salil的建议 但这不起作用..但我理解使用它的方式。以下内容将字符串:cnr转换为:nrInv.find(:all, :conditions => {:cnr.to_s[1,2] => '01' }) 有没有办法比较列的值的一部分与例如01

也许我应该反思。是否可以使用第2和第3位搜索cnrs,例如01?诀窍是这些数字总是第2和第3位。我假设用例如模糊搜索Solr不起作用,因为在搜索01时我不想cnr 40594013

这可以通过某种方式完成吗?

提前感谢您,并且道歉让您感到困惑。

1 个答案:

答案 0 :(得分:1)

如果您的问题is how to get the second and third digit from a integer? 您可以使用以下

40138355.to_s[1,2] ##This will give you "01"

EDITED Ref: - Substring

@invs = Inv.find(:all, :conditions => ["SUBSTRING(cnr,1,2) =?", @cnr.to_s[1,2] ])