2012-07-22 54 views
1

我正在學習Rails,並且正在閱讀Beginning Rails 3書籍。當您有has_many關聯時,您將自動接收方法。從Rails中的關聯中刪除對象

讓說用戶有很多文章。

user.articles.delete(article) 

現在,該行只將文章的外鍵設置爲「NULL」。如果您希望它從數據庫中消失,還是必須銷燬/刪除文章是否正確?或者有兩種方法可以解決這個問題嗎?

如果在刪除關聯之前銷燬與用戶有關係的文章會發生什麼情況?

回答

2

deletedestroy之間有一些不同。

刪除方法本質上刪除行..就是這樣..

在另一方面,destroy可以讓你更多的選擇:

  • 它會檢查任何回調,如before_delete,或任何相關性在模型上指定。
  • 它還會保留剛刪除的對象在內存中;因此,它允許你留言說:「文章#{article.id}刪除!!」
  • 而你的問題的答案是:它會刪除與該對象關聯的任何子對象。

所以,與其

user.articles.delete(article) 

可以使用

user.articles.destroy(article) 

這樣,您將防止數據庫上任何孤立行。

+0

這與REST有什麼關係? – 2012-07-22 12:42:51

+0

@Beerlington - 你是對的,路線和方法刪除之間沒有關係。我將編輯答案... – gabrielhilal 2012-07-22 18:19:53

相關問題