2013-10-28 45 views
0

與我之前的問題類似的問題,但這一點有點不同。所以我已經完成了下面的操作,它會刪除我的分類bin;如何更新另一個數據庫中的列字符串的值,同時刪除另一個數據庫

控制器

def destroy 
    @bin = Bin.find(params[:id]) 
    @bin.destroy 
    redirect_to :dashboard_main 
end 

每個BIN也:的has_many Savedtweets。上面,刪除bin,即使在模型中我可以這樣做:dependent =>:destroy,當BIN被刪除時如何刪除Savedtweets,但同時更新另一個名爲Newtweets的列並更改Status列值從「保存」到「新」。我試過這樣做,但不知道它,它的工作原理;

def destroy 
    @bin = Bin.find(params[:id]) 
    @newtweet = Newtweet.find_by_tweet_id(@bins.savedtweet.tweet_id).update_all$ 
    @bin.destroy 
    redirect_to :dashboard_main 
end 

這是醜陋的,但仍然無法正常工作。 Savedtweets和Newtweets表使用「tweet_id」,並且id相同。

回答

0

假設我讀了正確的問題,要更新的Newtweet記錄具有相同tweet_id值與@bin相關的Savedtweet記錄status領域。要做到這一點

一種方法是如下:

@bin = Bin.find(params[:id]) 
Newtweet.where(:tweet_id => @bin.savedtweets.pluck(:tweet_id)).update_all(:status => 'new') 

如果這是應該發生的一個Bin被摧毀任何時候,你會希望把它放在一個before_destroy回調,而不是控制器。

+0

我確實在我的bin模型中放入了before_destroy,但是它並沒有啓動......如果我把你的解決方案放入其中,它可以工作......你的天才......但那麼爲什麼不是我的before_destory工作。 – user2419316

+0

@ user2419316對不起,不知道爲什麼你的回調不起作用 - 我使用它們到處都是。也許這應該是一個新問題? – MrTheWalrus

+0

不錯,真的..我會用我的結構發表問題,再次感謝先生! – user2419316

相關問題