2016-12-19 3 views
0

"SpiritTrial"モデルのクエリを実行しようとしています。 "trlid"は7番目と8番目の数字= "TI"を持ち、モデルに見つかったオブジェクトを挿入しますTiTrialと私はSpiritTrialモデルから "trlid"を取り出し、TiTrialで "名前"として再定義したいと思います。ここで私はTiTrial.rbにいます。私は正しいものを取り戻しています。私はそれが必要なものにドキュメントを翻訳しているだけで苦労しています....どんな助けもいつものように高く評価されます。Ruby Railsは私のモデルにActiveRecordクエリを挿入します

def spiritpull 
    u = SpiritTrial.where("trlid LIKE (?)", "%%%%%%TI%") 

end 
+1

'%'とLIKEは正規表現で '。*'に似ていますので、%%%%%% TI%は ''%TI% "'と言っていると長引く紛らわしい方法です。おそらく '_'(正規表現では' .'のようなもの)が欲しいでしょう。 –

+0

"______ TI%"はより適切ですか?私は、レールコンソールに必要なものを返すことを見ています。しかし、私はちょうど7番目と8番目がTIと同等であることを望んでいます。それから誰が気にするのでしょうか?後で7〜10桁になる可能性があります。 – bwatson30

+1

はい、あなたが気にしている場合は '_'を使います。 '%%%%%% TI%'(これは '%TI%'に相当)はどこにでも 'TI 'があるものにマッチします。あなたがしようとしているものではありません。 –

答えて

0

のような移行を使用してSQLを追跡し続けるあなたにお勧めします。私が何かを逃しているかどうか教えてください。

+1

ありがとうBigRon !! – bwatson30

+0

うれしかったです! – BigRon

0

私はSQL関数を使用するためにあなたに勧め、それは時々ActiveRecordのは、SQLを実行するための最良の選択肢ではありません、あなたにDMNSを依存し、私はあなたのクエリを実行する関数を作成し、あなたのテーブルに挿入するべきだと思います。

def spiritpull 
    u = SpiritTrial.where("trlid LIKE (?)", "%%%%%%TI%") 
    # you should have multiple u results, iterate through each 
    u.each do |spirit| 
    # create a new TiTrial for each spirit 
    r = TiTrial.new(name: spirit.trlid) 
    # don't forget to save 
    r.save 
    end 
end 

は、各SpiritTrialを取り、私の上記のコメントごとに新しいTiTrialを作成します。私は私が正しく理解していれば、このhttp://www.rigelgroupllc.com/blog/2014/09/14/working-with-complex-sql-statements/

関連する問題