0

我有以下内容,它删除了一个 bin 以及与之相关的所有内容。它很棒而且功能强大;

模型箱

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

但是,它破坏了一个 bin,删除了所有内容,但不运行 :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 时,您正在模型中使用。因为它是一个实例方法,您可以使用self.savedtweets或仅savedtweets在 Bin 模型的当前实例上调用 savedtweets 方法。

于 2013-10-28T20:22:51.530 回答