`

ROR 级联部门设计及应用

阅读更多
ROR 级联部门设计
设计要点:has_many,belongs_to
支持添加子部门,欢迎大家前来拍砖!

使用方法:
@parent_depart.add_child(@child_depart)
@parent_depart.add_child(@child_depart2)
assert @child_depart.is_child?(@parent_depart)
assert @child_depart2.is_child?(@parent_depart)
assert @parent_depart.is_parent?(@child_depart)
assert @parent_depart.is_parent?(@child_depart2)


class User::Department < ActiveRecord::Base
  #设置表名
  set_table_name("user_"+self.table_name)


  ##
  #设置表间关系
  belongs_to :parent, :class_name => 'User::Department',
 :foreign_key => 'parent_id'  #父部门
  has_many :subs, :class_name => 'User::Department', 
 :foreign_key =>'parent_id'
 ,:conditions=>["status=?",STATUS_NORMAL]    #子部门
  has_one :creator, :class_name => 'User::User' #部门创建人

  ##
  #验证信息
  validates_presence_of :name, :message => "部门名称不能为空!"
  validates_presence_of :institution_id, :message => "绑定机构不能为空!"

  ##
  #实例方法

  #功能:添加子部门
  def add_child(child)
    child.parent_id = self.id
    child.save!
  end

  #功能:删除子部门
  #备注:删除子部门在最上层
  def remove_child (child)
    child.parent_id = 0
    child.save!
  end

  #功能:删除部门
  #流程:
  #      :1.判断是否有子部门 ,如果有不能删除
  #       : 2.更新部门状态-已删除
  def delete!
    if self.subs.blank?
      self.status = STATUS_END
      self.save!
    else
      raise "该部门包含子部门不能删除!"
    end
  end

  #功能:判断是否为父节点
  def is_child?(parent)
    self.parent_id == parent.id
  end

  #功能:判断是否为子节点
  def is_parent?(child)
    child.parent_id == self.id
  end

  #功能:获得该部门用户
  #返回:用户集合
  def member()
    User::User.find(:all, :conditions=>["department_id=?", self.id])
  end

  ##
  #类方法
  class << self

    #功能:顶级部门
    #参数列表 :机构
    #返回:最上层部门
    def top_department(institution)
      self.find(:all, :conditions=>["parent_id=0 and status=?
            and institution_id=?", STATUS_NORMAL, institution.id])
    end

  end

end
1
1
分享到:
评论
1 楼 edisonlz 2009-12-03  
   看帖需回帖

相关推荐

    使用ROR编写ORACLE WEB应用

    综上所述,使用ROR编写Oracle Web应用涉及安装配置、数据库连接、模型、视图、控制器的设计,以及部署和性能优化等多个方面。通过深入学习和实践,开发者可以掌握这一技术栈,为构建高效、稳定的Web应用奠定基础。

    RoR性能优化经验谈

    在Web服务器选择上,Lighttpd被推荐为RoR应用的理想选择,因为它与应用服务器的通信进行了优化。Lighttpd在完全接收POST数据后才一次性转发,同时在接收应用服务器响应时也不限制Buffer大小,从而减少了应用服务器的...

    初探ROR

    Ruby on Rails(简称ROR)是一个基于Ruby编程语言的开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,旨在促进开发过程的简洁性和效率。Ruby on Rails的核心理念是“Don't Repeat Yourself”(DRY,...

    神经网络ror resenet模型

    ResNet和Ror模型广泛应用于计算机视觉领域的各种任务,如图像分类、目标检测、语义分割等。同时,它们的残差学习思想也被应用到自然语言处理、语音识别等领域,极大地推动了深度学习的发展。 **总结** ResNet和Ror...

    ror实例

    Ruby on Rails(简称RoR或Rails)是一种基于Ruby语言的开源Web应用框架,它遵循Model-View-Controller(MVC)架构模式,旨在提高开发效率并提供简洁、优雅的代码结构。"ror实例"可能指的是在学习或实践中,通过创建...

    ror中文资料

    Ruby on Rails(RoR)是一个基于Ruby编程语言的开源Web应用框架,遵循MVC(Model-View-Controller)架构模式,旨在简化Web开发过程,提高开发效率。RoR强调“约定优于配置”,提供了一套完整的工具链,使得开发者...

    ROR安装必备所有架包

    然而,自Rails 3之后,这个组件已被弃用,取而代之的是更现代的RESTful API设计。 除了`.gem`文件,压缩包中还有`.tar`和`.tgz`格式的文件,它们是归档文件,可能包含源代码或者未打包的库文件。例如,`...

    用于ROR应用的lighttpd配置模板

    在开发和部署Ruby on Rails(简称ROR)应用程序时,选择合适的服务器软件是至关重要的一步。Lighttpd是一个轻量级、高效的Web服务器,尤其适合处理动态内容,如Rails应用。"用于ROR应用的lighttpd配置模板"提供了一...

    RoR选题方向—源代码

    Ruby on Rails(RoR)是一种基于Ruby语言的开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在简化Web开发过程。在这个选题方向中,我们主要探讨的是与RoR相关的源代码分析和学习。源代码是...

    ror

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

    freemis 基于ror框架的mis

    RoR是由David Heinemeier Hansson开发的一个开源Web应用程序框架,它遵循“Don't Repeat Yourself”(DRY)原则,强调简洁和生产力。RoR使用Ruby语言,以其优雅的语法和强大的元编程能力,使得开发者可以快速地构建...

    RoR 培训课程PPT

    - **哲学思想与MVC模式**:阐述了RoR的设计哲学,强调代码简洁性与可读性,通过模型-视图-控制器(Model-View-Controller, MVC)模式实现应用程序结构的清晰划分。 - **创建第一个应用**:演示如何利用Rails提供的...

    ROR 文件的上传与下载

    在Ruby on Rails(简称ROR)框架下,处理文件的上传与下载是一项常见的需求,尤其是在构建包含媒体内容的应用程序时。本文将基于给定的文件信息,详细阐述如何在Rails应用中实现文件的上传与下载功能,包括数据库...

    ROR介绍演讲课件 ruby on rails

    Ruby on Rails,简称RoR,是由David Heinemeier Hansson基于Ruby语言开发的一款开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,旨在提高开发效率和可读性,使得开发者能够更快速地构建功能丰富的web...

    机遇ROR 的图书管理系统

    通过学习和实践《机遇ROR的图书管理系统》,你不仅能掌握Ruby on Rails的核心技能,还能提升对Web开发整体流程的理解,为未来开发更复杂的Web应用打下坚实基础。而提供的"EasyKey1.1.exe"可能是用于辅助学习的工具,...

    计算机软件-编程源码-FOXPRO ROR WINDOWS 高级成程序设计技术.zip

    在"FOXPRO ROR WINDOWS 高级成程序设计技术.zip"中,我们可能找到一系列高级编程技术的实践示例,这些技术可能包括但不限于: 1. **面向对象编程**:FOXPRO支持类和对象的概念,允许开发者创建自定义的数据结构和...

    RoRBlog 基于RoR的博客系统

    基于RoR的博客系统,代码风格简单清晰,前后太完善,适合初学者。

    ROR环境配置

    在IT行业中,Ruby on Rails(简称ROR)是一款基于Ruby语言的开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在简化Web应用开发过程,提高开发效率。本文将深入探讨如何配置ROR开发环境,以及...

    ror留言板程序

    "ror留言板程序"是一个基于Ruby on Rails框架开发的简单应用,它主要用于实现用户在网站上留言和查看他人留言的功能。Ruby on Rails(简称RoR)是用Ruby语言编写的开源Web应用程序框架,遵循MVC(Model-View-...

Global site tag (gtag.js) - Google Analytics