2

私は今、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
終わり

これにより、次の出力が得られるはず@r = 01です@cnr = 40138355

ターゲットはinvs、たとえば012 桁目と 3 桁目のみで表示することです。

私が使用している:
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か?

逆に考えた方がいいのかな。cnrs2桁目、3桁目などで検索することはでき01ますか?トリックは、これらの数字が常に 2 桁目と 3 桁目であるということです。たとえば、Solr を使用したあいまい検索は機能01しないと思いますcnr 40594013

これは何らかの方法で行うことができますか?

事前に感謝し、混乱させて申し訳ありません.

4

1 に答える 1

1

あなたの質問があれば、is how to get the second and third digit from a integer? 次を使用できます

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

編集済み参照:-部分文字列

@invs = Inv.find(:all, :conditions => ["SUBSTRING(cnr,1,2) =?", @cnr.to_s[1,2] ])
于 2012-10-15T11:20:31.297 に答える