rails このeachがうまく実行できない理由
やろうとしていること
eachでCrime12のcrime_idが1から23までを抽出。
便宜上、@crime_calに入れる。
(ちなみにここ、なぜかインスタンス変数じゃなく、普通の変数を使おうとしても使えなかったのですが、ここの理由も分かる方いらっしゃいましたら、できれば教えて頂きたい…!)
Crime12のカラムとKeisanモデルのカラムを掛け合わせ目的の数値を
Crime12のカラム、@crime_cal["crime_point"] に入れる。
(debuggerで確認するとこれはうまくいっている様子)
@crime_cal.saveで記録する。
(このsaveを抜きにしても問題なく実行されると思ったのですが、これは意味のないことをしていますか?これをせずとも、データベースに変更が記録されるのでしょうか?)
あとは配列を作って、crime_id、1から23までのcrime_pointをこの配列に入れれば成功なのですが、何故か、
@crime_cal_result[0]にcrime_idが23のcrime_pointしか入っていません。
あとは全部nilでした…
何が原因でしょうか。
@crime_cal_result.classで調べるとちゃんとarrlyで出ますし、
入れようとしているのももちろんintegerでした。
あとdebuggerを実行しているときに@crime_cal_resultに適当に数値を入れると入ります。
もう降参です。
このeach文です…
id =[]
id = [*1..23]
id.each { |n| @crime_cal = Crime12.all.find_by_crime_id(n)
@crime_cal["crime_point"] = @crime_cal["heinous"] * @keisan["heinous_num"] +
@crime_cal["violent"] * @keisan["violent_num"] +
@crime_cal["intrusive_theft"] * @keisan["intrusive_theft_num"] +
@crime_cal["non_intrusive_theft"] * @keisan["non_intrusive_theft_num"] +
@crime_cal["other_crime"] * @keisan["other_crime_num"]
@crime_cal.save
@crime_cal_result = []
@crime_cal_result << @crime_cal["crime_point"]
}
debugger
皆さま、いつも、いつもありがとうございます。
今回もQiitaのエンジニアの皆さんのお力をお貸しください。
よろしくお願いします。