2012-07-22 57 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

相关问题