0

ビンとそれに関連するすべてを削除する次のものがあります。それは素晴らしい機能です。

モデルビン

class Bin < ActiveRecord::Base

    has_many :savedtweets, :dependent => :destroy
    before_destroy :mod_newtweets

    def mod_newtweets
        Newtweet.where(:tweet_id => @bin.savedtweets.pluck(:tweet_id)).update_all(:status => 'new')
    end
end

ただし、ビンを破棄し、すべてを削除しますが、:mod_newtweets を実行して他のテーブルとその列を更新しません。

これをコントローラーに入れると、正常に動作します。

Newtweet.where(:tweet_id => @bin.savedtweets.pluck(:tweet_id)).update_all(:status => 'new')

私はすべてが正しく行われていると思っていました。

4

1 に答える 1

1

メソッドを次のように置き換えます。

def mod_newtweets
    Newtweet.where(:tweet_id => savedtweets.pluck(:tweet_id)).update_all(:status => 'new')
end

@bin.savedtweets@bin をどこにも定義していないときに、モデルで使用しています。これはインスタンス メソッドであるため、Bin モデルの現在のインスタンスでsavedtweets メソッドを呼び出すか、self.savedtweetsまたは呼び出すためだけに使用できます。savedtweets

于 2013-10-28T20:22:51.530 に答える