我有以下内容删除了一个bin以及与之相关的所有内容。这很棒,功能很好;
MODEL 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')
我以为我已经做好了一切。
答案 0 :(得分: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方法。