注:此法不可取
应用场景:
我有一个分类和分类中的图书,我要在删除分类时,把图书也一起删除掉。
在Rails中有自带的
has_many :books, :dependent => :destroy
不过我不用它自带的这个,自己实现before_destroy的回调,这样写:
class Category < ActiveRecord::Base
has_many :books
before_destroy :clear_all_books
def clear_all_books
self.books.delete_all
end
表面上看,以上代码没有什么问题吧,但是在删除分类后,并没有把它所属的图书也删除,而是
将表books中相关的记录的category_id置为null
,要实现的话这样:
def clear_all_books
self.books.find(:all).each{|book|book.destroy}
end
另外这个
has_many :books, :dependent => :destroy声明还有一个问题:
如果我在Model Book中有关于destroy的回调,那么在Model Category这一端删除分类时,虽然因为
:dependent => :destroy把相关联的book也删除了,但是不会执行Model Book的中estroy的回调。
这问题真是的!!!
分享到:
相关推荐
rails2-sample good book
Ruby on Rails中文指南
Ruby on Rails Guides v2 - Ruby on Rails 4.2.5
rails指南 中文版
Embrace the full stack of web development, from styling with Bootstrap, building an interactive user interface with Angular 2, to storing data quickly and reliably in PostgreSQL. With this fully ...
Ruby On Rails中文教材(PDF)
使用Aptana+Rails开发Rails Web应用 有Aptana的安装配置等等,中文
《Ruby on Rails Tutorial》中文版(原书第2版,涵盖 Rails 4) Ruby 是一门很美的计算机语言,其设计原则就是“让编程人员快乐”。David Heinemeier Hansson 就是看重了这一点,才在开发 Rails 框架时选择了 Ruby...
敏捷Rails中文教程 敏捷Rails中文教程 敏捷Rails中文教程
rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails ...
Rails又一书籍《Simply Rails 2 》第二版(2008)
Rails Guides 5.0 中文版
[Ruby_on_Rails][中文][Rails_5.x]__03-2_._安裝不同版本的Rails與產生Rails_5.x版
Pragmatic - Agile Web Development with Rails 2ndPragmatic - Agile Web Development with Rails 2ndPragmatic - Agile Web Development with Rails 2ndPragmatic - Agile Web Development with Rails 2...
介绍rails框架,版本是rails2点几的,不过思路差不多,具体区别可以去看官网
《Rails之道》详细讨论了Rails的程序代码并通过分析Rails中的代码片段来深入解释它的功能,同时,《Rails之道》部分章节也摘录了一些API文档中的内容,使读者能够快速地找到对应的API文档、相关的示例代码以及深入...
rails-assets, 在 Rails 中,资产管理的解决 Rails 资产 Bundler 到 Bower 代理本自述文件涉及项目的开发方面。 访问站点了解如何在你的应用程序中使用 Rails 资产。 插件开发设置git clone git@github.com:tenex/r
中文世界唯一一本Rails 4.0.0 + Ruby 2.0.0 的自學書籍
本资源是参照rails敏捷开发第四版书中的例子,rails的版本是rails3.2.6