`

Rails2中的诡异(2)

阅读更多
注:此法不可取

应用场景:
我有一个分类和分类中的图书,我要在删除分类时,把图书也一起删除掉。
在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

    从给定的文件信息来看,我们正在探讨的是一本关于Ruby on Rails的书籍,书名为《Simply Rails2》,作者是Patrick Lenz。本书旨在为初学者提供深入理解Ruby on Rails框架的指南,从基础概念到高级主题均有涵盖,是...

    Rails的中文乱码问题

    2. **文件编码**:Rails项目中的文件(如控制器、模型、视图)如果用非UTF-8编码保存,可能导致读取时乱码。使用UTF-8无BOM格式保存所有文本文件。 3. **HTTP头设置**:Web服务器或Rails应用程序需要设置正确的字符...

    Ruby on Rails中文指南

    2. **模型(Models)**:模型代表了数据库中的数据和业务逻辑。Ruby on Rails使用ActiveRecord,一个ORM(对象关系映射)库,使得与数据库交互变得简单。你可以通过定义类和方法来创建、更新、查询数据。 3. **视图...

    rails指南 中文版

    1. **ActiveRecord**:这是Rails框架中的ORM(Object-Relational Mapping)组件,它负责处理数据库操作。通过ActiveRecord,开发者可以使用面向对象的方式来操作数据,而无需编写SQL语句。 2. **ActionController**...

    使用Aptana+Rails开发Rails Web应用(中文)

    安装过程中,遵循提示进行,确保选择自定义安装并勾选Rails相关的插件,以便在Aptana中获得对Rails的全面支持。 安装完成后,打开Aptana Studio,创建一个新的Rails项目。在“File”菜单中选择“New”然后点击...

    Ruby on Rails Guides v2 - Ruby on Rails 4.2.5

    ### Ruby on Rails Guides v2 - Ruby on Rails 4.2.5 #### 一、重要概念及基础假设 - **重要概念**:本指南旨在帮助读者深入理解Ruby on Rails(以下简称Rails)4.2.5版本的核心功能与最佳实践。 - **基础假设**:...

    [Rails 常用插件简介]CRUD Generator 2

    **Rails 常用插件简介 - CRUD Generator 2** 在Ruby on Rails框架中,开发过程中经常需要创建、读取、更新和删除(CRUD)数据。为了提高开发效率,开发者通常会使用各种插件来自动化这个过程。CRUD Generator 2就是...

    agile web development with rails2代码

    4. ** erb模板**:ERB(Embedded Ruby)是Rails2中用于视图层的模板引擎,允许在HTML中嵌入Ruby代码,动态生成页面。 5. **Helper方法**:Rails提供了许多内置的Helper方法,帮助开发者在视图层处理常见的HTML渲染...

    Flexible Rails: Flex3 on Rails2

    ### Flexible Rails: Flex3 on Rails2 #### 关于Flexible Rails 本书《Flexible Rails: Flex 3 on Rails 2》由Peter Armstrong撰写,旨在探讨如何结合使用Flex 3和Rails 2来开发高效的富互联网应用程序(Rich ...

    Rails 中mongrel的安装

    2. **Ruby编写**: 作为纯Ruby实现的服务器,Mongrel与Rails框架集成紧密,减少了中间层带来的额外复杂性。 3. **轻量级**: Mongrel体积小巧,启动快速,适合开发和测试环境。 ** 安装Mongrel ** 在Rails项目中安装...

    Rails101_by_rails4.0

    此外,书中还介绍了一些Rails中的高级概念,如Strong Parameters(强参数),它在Rails 4.0版本中引入,用于解决之前版本中的参数篡改问题,从而帮助开发者安全地处理外部提交的数据。 通过一系列的教学内容,包括...

    rails版本区别

    在Rails 2中,开发者通过一系列以`script/`开头的脚本来执行各种任务,如生成代码、启动服务器或数据库控制台等。然而,在Rails 3中,这些命令的调用方式被简化并统一化。例如,`script/generate`被替换为`rails g`...

    Rails.Angular.Postgres.and.Bootstrap.2nd.Edition

    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 ...

    Rails 101 入门电子书

    - 如何在Rails中实现RESTful接口。 - **案例分析**: - 分析一个典型的RESTful应用示例。 #### 九、练习作业2-在Group里面发表文章-双层RESTFul - **目标**: - 在Group中添加Post功能。 - **实现过程**: - 创建...

    中文版rails教程

    在Ruby on Rails中,开发者可以快速构建功能丰富的动态网站,因为它提供了大量的内置功能和库,如数据库连接、ORM(对象关系映射)系统ActiveRecord、模板引擎ActionView以及路由系统ActionController等。...

    Rails项目源代码

    这个Rails项目提供了学习和研究Web开发的机会,特别是对于Ruby on Rails新手,可以通过阅读和理解源代码来提升技能,了解实际应用中Rails的用法。同时,对于有经验的开发者,这个项目也可以作为一个起点,进行二次...

    关于rails 3.1 cucumber-rails 1.2.0

    总的来说,了解和熟练掌握Rails 3.1和Cucumber-Rails 1.2.0的用法,对于任何希望在Ruby on Rails环境中进行高效、高质量开发的团队来说都是至关重要的。通过阅读相关的博客文章(如给出的链接),开发者可以深入学习...

    Simply Rails 2 2nd Edition (2008)

    ### Simply Rails 2 第二版 (2008) 相关知识点解析 #### 标题与描述解析 - **书名**:“Simply Rails 2” 第二版(2008年)是一本关于Ruby on Rails框架的技术书籍。 - **描述**:该书为Rails系列书籍中的又一力作...

    Ruby On Rails中文教材(PDF)

    2. **Rails框架结构**:学习者需要了解MVC架构,包括模型(Model)、视图(View)和控制器(Controller)各自的作用。模型处理数据逻辑,视图负责展示用户界面,而控制器作为两者之间的桥梁,协调数据传输。 3. **...

Global site tag (gtag.js) - Google Analytics