在开发Rails应用中,随着业务的扩大,Model中的代码量越来越大,(本来在Rails中也是说瘦Controller,胖Model,不是吗?),上百上千行代码也是很常见的,所以很有必要将单个Model将照不同的作用分开,这样代码维护性也好。
我在
http://github.com/courtenay/altered_beast/tree/master/config/initializers/concerns.rb看到一个很好的简单的方法:
建立
RAILS_ROOT/config/initializers/concerns.rb文件
class << ActiveRecord::Base
def concerned_with(*concerns)
concerns.each do |concern|
require_dependency "#{name.underscore}/#{concern}"
end
end
end
现在Model就有了一个
concerned_with方法,例如在User这个Model中,我们可以将validation和一些业务方法分开来管理:
RAILS_ROOT/app/models/user.rb
class User < ActiveRecord::Base
concerned_with :validations, :service
end
现在建立
RAILS_ROOT/app/models/user/validations.rb文件:
class User < ActiveRecord::Base
validates_presence_of :name
end
RAILS_ROOT/app/models/user/service.rb
class User < ActiveRecord::Base
def self.authenticate(name, password)
find_by_name_and_password(name, password)
end
end
这以上只是一个很小的例子而已.
面对这样,是不是感觉很舒服呢?
分享到:
相关推荐
在本项目"Ruby-Rails实战之B2C商城开发"中,我们将深入探索使用Ruby on Rails这一强大的Web开发框架来构建一个完整的B2C(Business-to-Consumer)在线商城。Rails是Ruby语言的一个核心框架,以其MVC(Model-View-...
本文将深入探讨一个名为"splitcheck"的Ruby on Rails应用程序,它是一个专门针对餐厅是否允许拆分支票的在线讨论平台。该应用旨在提供一个互动社区,让用户分享他们的经验,发表意见,并通过投票来表达对特定餐厅的...
【标题】:“blood-app-app:带有React前端的Rails API后端-进行中”指的是一个正在开发中的项目,该项目结合了React前端技术和Ruby on Rails(Rails)API后端,旨在创建一个用于管理血压数据的应用程序。...
本篇文章将深入探讨如何在Rails 3项目中集成Spine.js,以创建一个高效、响应式的前端。 **一、Spine.js简介** 1. **核心概念**:Spine.js的核心组件包括Model、Controller、View和Event Bus。Model负责数据处理,...
标题中的“rails_ionic_min:IONIC Icons缩小了GEM”指的是一个针对Rails框架的Gem,它专门用于集成和优化IONIC图标库。IONIC Icons是一个包含大量图标资源的库,广泛应用于移动应用开发,尤其是基于IONIC框架的应用...
开发者可以通过查看这些文件,学习如何在实际项目中集成React、Redux和Rails,以及如何设计和实现一个完整的预订系统。 总结起来,Book_Air应用展示了React和Redux在构建用户交互丰富的前端应用中的强大能力,同时...
标题中的“onelogApp:onelog 的 UI,使用 React 和 Reflux,访问 rails API”揭示了这个项目是一个基于React和Reflux构建的日志应用用户界面,它与后端Rails API进行交互。下面将详细阐述React、Reflux以及Rails API...
这个项目展示了如何将前端的React框架与后端的Ruby on Rails框架相结合,以构建一个功能齐全的Web应用。 【描述】"我的公寓追踪器" 提供了一个全面的解决方案,用于管理和记录公寓相关数据。通过React,用户界面...
在构建初创企业的电子商务原型时,"tastemaker:Rails, JavaScript"项目是一个很好的起点,它融合了Ruby on Rails(简称Rails)的后端框架和JavaScript的前端技术,为初学者和有经验的开发者提供了一个实战性的学习...
MooTools是一个轻量级且功能丰富的JavaScript库,它的设计灵感来源于Ruby on Rails,旨在提供一种更加优雅和模块化的编程方式。 在"JavaScript实现的漂亮的基于MooTools 框架的边栏平滑菜单效果demo"中,我们可以...
3. **易于维护**:修改一个部分不会影响其他部分,降低了维护成本。 4. **可重用性**:视图和模型可以复用,减少重复代码。 5. **扩展性**:随着需求变化,可以通过添加新的控制器和视图来扩展功能,而无需修改原有...
例如,Spring Boot对于Java开发者来说是一个强大的框架,提供自动配置、依赖注入等功能;Python的Django则以其MVT(Model-View-Template)设计模式简化了开发流程。 三、数据库管理 数据库是存储和管理数据的关键...
在本项目中,"购物"指的是一个名为ShoppAWatch的电子商务应用,它结合了Ruby on Rails后端技术和React前端框架来提供流畅的在线购物体验。让我们深入探讨这两个核心技术及其在构建电商应用中的作用。 首先,Ruby on...
微服务架构提倡将单一应用拆分为多个小型、独立的服务,每个服务都有自己的数据库和业务逻辑。这使得服务可以独立部署、扩展和升级,增强了系统的灵活性和可扩展性。例如,Netflix和Uber等公司广泛应用微服务架构。 ...
- **微服务架构**:将单个应用程序拆分成一组小的服务,每个服务都实现了特定的功能,并且能够独立部署、扩展。 - **事件驱动架构**:这种架构依赖于事件的发布和订阅机制,使得各个组件之间能够松耦合,提高了系统...
氦气CMS是Laravel生态系统中的一个创新尝试,为开发者提供了一个在Laravel框架下构建内容管理系统的便捷途径。尽管作为实验性项目,其稳定性和成熟度可能有待提高,但无疑为开发者提供了探索和学习的机会,也推动了...
Ruby Web Application Framework,通常指的是Ruby on Rails(RoR),它是一个使用Ruby编程语言构建的开源web应用框架。这个框架遵循MVC(Model-View-Controller)架构模式,旨在提高开发效率,强调“约定优于配置”...
Rails,全称为Ruby on Rails,是一个基于Ruby语言的开源Web应用框架,遵循MVC(Model-View-Controller)架构模式。Rails强调“约定优于配置”,推崇DRY(Don't Repeat Yourself)原则,以提高开发效率。它包含了一...
这些组件可以是服务、模块、库或应用程序,它们通过接口连接,形成一个功能完备的系统。例如,Node.js和React常用于构建前后端分离的Web应用,JavaScript作为它们共同的语言基础,负责处理客户端和服务器端的逻辑。 ...
可能有一个主SCSS文件(如`style.scss`),以及按功能或组件拆分的多个部分(如`header.scss`, `footer.scss`, `button.scss`等)。 3. **JavaScript文件**:可能包含实现交互和动态功能的脚本,例如响应式导航、...