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
分享到:
相关推荐
综上所述,使用ROR编写Oracle Web应用涉及安装配置、数据库连接、模型、视图、控制器的设计,以及部署和性能优化等多个方面。通过深入学习和实践,开发者可以掌握这一技术栈,为构建高效、稳定的Web应用奠定基础。
在Web服务器选择上,Lighttpd被推荐为RoR应用的理想选择,因为它与应用服务器的通信进行了优化。Lighttpd在完全接收POST数据后才一次性转发,同时在接收应用服务器响应时也不限制Buffer大小,从而减少了应用服务器的...
Ruby on Rails(简称ROR)是一个基于Ruby编程语言的开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,旨在促进开发过程的简洁性和效率。Ruby on Rails的核心理念是“Don't Repeat Yourself”(DRY,...
ResNet和Ror模型广泛应用于计算机视觉领域的各种任务,如图像分类、目标检测、语义分割等。同时,它们的残差学习思想也被应用到自然语言处理、语音识别等领域,极大地推动了深度学习的发展。 **总结** ResNet和Ror...
Ruby on Rails(简称RoR或Rails)是一种基于Ruby语言的开源Web应用框架,它遵循Model-View-Controller(MVC)架构模式,旨在提高开发效率并提供简洁、优雅的代码结构。"ror实例"可能指的是在学习或实践中,通过创建...
Ruby on Rails(RoR)是一个基于Ruby编程语言的开源Web应用框架,遵循MVC(Model-View-Controller)架构模式,旨在简化Web开发过程,提高开发效率。RoR强调“约定优于配置”,提供了一套完整的工具链,使得开发者...
然而,自Rails 3之后,这个组件已被弃用,取而代之的是更现代的RESTful API设计。 除了`.gem`文件,压缩包中还有`.tar`和`.tgz`格式的文件,它们是归档文件,可能包含源代码或者未打包的库文件。例如,`...
在开发和部署Ruby on Rails(简称ROR)应用程序时,选择合适的服务器软件是至关重要的一步。Lighttpd是一个轻量级、高效的Web服务器,尤其适合处理动态内容,如Rails应用。"用于ROR应用的lighttpd配置模板"提供了一...
Ruby on Rails(RoR)是一种基于Ruby语言的开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在简化Web开发过程。在这个选题方向中,我们主要探讨的是与RoR相关的源代码分析和学习。源代码是...
NULL 博文链接:https://xuxiangpan888.iteye.com/blog/266696
在Ruby on Rails(简称ROR)框架下,处理文件的上传与下载是一项常见的需求,尤其是在构建包含媒体内容的应用程序时。本文将基于给定的文件信息,详细阐述如何在Rails应用中实现文件的上传与下载功能,包括数据库...
RoR是由David Heinemeier Hansson开发的一个开源Web应用程序框架,它遵循“Don't Repeat Yourself”(DRY)原则,强调简洁和生产力。RoR使用Ruby语言,以其优雅的语法和强大的元编程能力,使得开发者可以快速地构建...
- **哲学思想与MVC模式**:阐述了RoR的设计哲学,强调代码简洁性与可读性,通过模型-视图-控制器(Model-View-Controller, MVC)模式实现应用程序结构的清晰划分。 - **创建第一个应用**:演示如何利用Rails提供的...
Ruby on Rails,简称RoR,是由David Heinemeier Hansson基于Ruby语言开发的一款开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,旨在提高开发效率和可读性,使得开发者能够更快速地构建功能丰富的web...
通过学习和实践《机遇ROR的图书管理系统》,你不仅能掌握Ruby on Rails的核心技能,还能提升对Web开发整体流程的理解,为未来开发更复杂的Web应用打下坚实基础。而提供的"EasyKey1.1.exe"可能是用于辅助学习的工具,...
在"FOXPRO ROR WINDOWS 高级成程序设计技术.zip"中,我们可能找到一系列高级编程技术的实践示例,这些技术可能包括但不限于: 1. **面向对象编程**:FOXPRO支持类和对象的概念,允许开发者创建自定义的数据结构和...
基于RoR的博客系统,代码风格简单清晰,前后太完善,适合初学者。
在IT行业中,Ruby on Rails(简称ROR)是一款基于Ruby语言的开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在简化Web应用开发过程,提高开发效率。本文将深入探讨如何配置ROR开发环境,以及...
"ror留言板程序"是一个基于Ruby on Rails框架开发的简单应用,它主要用于实现用户在网站上留言和查看他人留言的功能。Ruby on Rails(简称RoR)是用Ruby语言编写的开源Web应用程序框架,遵循MVC(Model-View-...