2017-01-17 23 views
0

だから私は次のコードを持っている:Railsのエラー:未定義のメソッド `プッシュ」nilのために:NilClass

new = @params[collection.to_s + '_attributes'] 
old = @model.send collection 

if new.nil? 
    old.clear 
else 
    new_records = new.map { |_, e| e[:id] } 
    if !new_records.nil? && !old.nil? 
    old.not_in(id: new_records).destroy_all 
    end 
end 

を問題は、私が使用していなかったです『どこにでも私のコードでプッシュ』機能をし、スタックトレースに基づきます実行時にエラーが発生します。

​​

私は誰かが私を助けることを願っています。前もって感謝します!

UPDATE

私は今の代わりにdestroy_allのDELETE_ALLを使用して終了。私はそれがエラーを引き起こしていたと思います。今は動作していますが、destroy_allを使っていない理由を知ることができれば本当にうれしいでしょう。

+0

このコードで何を達成しようとしていますか? 'not_in'のコードは何ですか? –

+0

私はあまりにも確かではありません。不完全な詳細については申し訳ありません。私は実際にnot_inは組み込み関数だと思っていました。 – Jed

+0

'not_in'はrailsコマンドではないと思います。' old.where.not(id:new_records).destroy_all'を試してください。 – Sravan

答えて

1

私は考えていないnot_inは代わりに、

old.where.not(id: new_records).destroy_all

または、not inがこのように使用することができますしようと、レールコマンドです。

old.where('id NOT IN (?)',new_records).destroy_all

1

試してみてください。

常に配列を必要としないで
old.where.not(id: [new_records]).destroy_all 

関連する問題