`
不想长大
  • 浏览: 6743 次
  • 性别: Icon_minigender_2
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

ROR中的has_many中的dependent

阅读更多

:dependent有三個選項:(在此假設User has_many Posts, Post has_many Comments)

class User < ActiveRecord::Base
  has_many :posts, :dependent => :destroy
end

    * :destroy:呼叫User.destroy时,ActiveRecord会呼叫Post.destroy来达到刪除Posts的目的,也就是与该Posts相关联的comments也会被一并删除。(除非Post于Comments之间的关联是nullify)
    * :delete_all:呼叫User.destroy時,仅刪除User本身及该user的posts。
    * :nullify:不刪除关联的物件,仅将User的posts之Foreign Key改为NULL

至于要在物件刪除之前,若要做验证动作,就如同ptt Ruby的板主godfat分享的一样,使用"before_destroy"可以在呼叫destroy之前先做其他动作。例如在这个网页里面看到的sample code(before_destroy是写在Model里,destroy的动作则是由controller中的action来呼叫):

class Group < ActiveRecord::Base
  acts_as_treerder => "name"

  has_and_belongs_to_many => :users

  before_destroy :validates_no_dependents

  def validates_no_dependents
    if children.size > 0 || users.size > 0
      errors.add :base, "Cannot delete this group, as it has sub-groups and/or users"
    end
  end
end
分享到:
评论

相关推荐

    ror_invoicing_frontend

    ror_invoicing_frontend项目设置yarn install编译和热重装以进行开发yarn serve编译并最小化生产yarn build整理和修复文件yarn lint自定义配置请参阅。

    ROR_shopping_microservice:用Sinatra制成

    在本项目中,"ROR_shopping_microservice"很可能是一个专注于购物功能的独立服务,比如处理商品列表、购物车、订单等业务逻辑。 4. **微服务开发**: 使用Sinatra开发微服务的优点在于其轻量级和模块化特性,可以...

    BCGSoft[1].Professional.Editor.v6.75-ROR.ZIP_BCGSoft

    bcgsoft professional editor + crack file

    ruby_full:RoR_Full_29 :: Ruby_reports

    Ruby_full: RoR_Full_29 :: Ruby_reports 涵盖了全面的Ruby on Rails(RoR)开发中的报告生成技术。Ruby是一种面向对象的编程语言,以其简洁、优雅的语法著称,而Ruby on Rails是基于Ruby构建的一个开源Web应用框架...

    [转]完美的Tree

    【标题】:“完美的Tree”指的是在编程领域中构建的一种数据结构——树,它在很多IT应用中都有着重要的地位。这个标题可能是指一个关于如何高效、优雅地实现或使用树结构的教程或者代码分享。 【描述】:虽然描述...

    ROR_care_compass

    您的应用程序在README文件中包含诊断。 报告任何问题时,请提供README文件的副本。 如果该应用程序无法正常运行,请并提供诊断信息。Ruby on Rails 此应用程序需要: Ruby 2.1.6 导轨4.2.1 了解有关更多信息。入门...

    ror_blog_app

    自述文件该自述文件通常会记录启动和运行应用程序所需的所有步骤。 您可能要讲的内容: Ruby版本系统依赖配置数据库创建数据库初始化如何运行测试套件服务(作业队列,缓存服务器,搜索引擎等) 部署说明...

    ror_skeletal_app

    自述文件该自述文件通常会记录启动和运行应用程序所需的所有步骤。 您可能要讲的内容: Ruby版本系统依赖配置数据库创建数据库初始化如何运行测试套件服务(作业队列,缓存服务器,搜索引擎等) 部署说明...

    ror_auth_sp21

    自述文件该自述文件通常会记录启动和运行应用程序所需的所有步骤。 您可能要讲的内容: Ruby版本系统依赖配置数据库创建数据库初始化如何运行测试套件服务(作业队列,缓存服务器,搜索引擎等) 部署说明...

    RoR_API_TDD:Udemy的REST API与Ruby on Rails课程

    自述文件 带有TDD的Rails API Udemy的课程带有Ruby on Rails的REST API 您可能要讲的内容: Ruby版本:2.7.0 Rails版本:5.2.4.4 组态 数据库创建 数据库初始化 测试套件:Rspec 服务(作业队列,缓存服务器,...

    RoR_julia_eg:通过 ZMQ 使用 Julia 链接的 Ruby on Rails Web 应用程序示例

    基本上,我们在 Julia 中创建了一个 ZMQ 服务器,它将按照网页的指示执行一些预定义的计算。 在这种情况下,提供一个数字并将其神奇地乘以 3 :) 这个例子的灵感来自和的优秀。 下面的部分代码取自该博客。 安装 我...

    ror中文资料

    在提供的压缩包文件中,我们可以看到"Ruby语言中文教程",这暗示了资源可能包含了关于Ruby语言的基础知识和进阶内容,对于学习RoR至关重要。Ruby是RoR的基础,理解其语法和特性对于掌握RoR框架极其关键。 **Ruby...

    RoR中文解决方案(很不错哦)

    标题中的“RoR中文解决方案”指的是Ruby on Rails(简称RoR)的一个针对中文环境的解决方案。Ruby on Rails是一个开源的Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,用Ruby语言编写,旨在使开发...

    RoR性能优化经验谈

    在本文中,我们将探讨一些RoR性能优化的关键方面,主要基于JavaEye网站在使用RoR过程中积累的实际经验。 首先,RoR性能优化涉及到多个层面,包括应用程序的部署、服务器配置以及代码优化。在部署方面,操作系统的...

    神经网络ror resenet模型

    在Ror块中,不仅有常规的残差学习,还有更高层次的残差学习,即残差学习的残差。这种多层次的结构使得网络能更细致地理解特征,并且有助于减少过拟合,提高模型的泛化能力。 **CIFAR-10和CIFAR-100数据集** CIFAR-...

    ror

    NULL 博文链接:https://xuxiangpan888.iteye.com/blog/266696

    ROR安装必备所有架包

    在Ruby on Rails(ROR)开发环境中,安装和配置正确的依赖包是至关重要的。这个压缩包包含了一系列用于ROR框架的基础组件,但不包括Ruby本身。让我们深入了解一下这些包的作用和重要性。 首先,`actionpack`是Rails...

    基于RoR的在线考试系统

    这需要在数据库中设置关联关系,如通过has_many和belongs_to关系定义课程与科目、科目与试题之间的关联。 3. **试题库管理**:试题是在线考试的核心,包括选择题、填空题、判断题等多种类型。试题需要分类存储,...

Global site tag (gtag.js) - Google Analytics