最近公司一个项目,需要将新网站接入美国总部的 ERP 系统,同时对流程做一部分的扩展。在这之中碰到的最大的问题,就是没有旧系统的设计并不符合 ERP 的需求,而因为要保证整个过程的无缝链接以及敏感数据的安全,对于数据库的改动限制非常大。
同事 Daniel 负责这次的更新,我们对这个问题也讨论过好多次,在 Rails 如何实现这样的功能呢。最后选出了一种不破坏旧系统的结构,也不需要数据导入的方式。只在需要进行 ERP 扩展的对象上增加相应的字段,然后使用 Order 对象的子类 ERPOrder 进行封装,将这个类传递到 ERP 系统代替原来的 order 对象。这样下来,几乎整个 ERP 的交互过程不需要做太大的改动,流程控制也变得简单且清晰,状态判断以及异常处理也变得非常合理,代码精简不少。
对 ERPOrder 类的编码中,深刻体会到 Ruby 语言的动态性带来的便利。为了避免这次的情况,能为以后更新版本的系统提供兼容,我们将很多业务逻辑抽取出来,作为 module mix in 到 erp 对象中。以后即使系统再次升级,也不用担心是否会影响到 order 对象本身的业务逻辑以及数据验证。
不过对于 Ruby 中的 module,mixin,include 机制还不是了解得很透彻,以后要多学习了
分享到:
相关推荐
Rails指南中文版是针对...此外,Rails社区活跃,有大量的插件和gem可供扩展,为开发者提供了丰富的资源和强大的支持。通过深入学习和实践,你将成为一名高效的Rails开发者,能够创建出优雅、高效且易于维护的Web应用。
userstamp, 这个 Rails 插件扩展ActiveRecord Userstamp插件( v-2.0 )概述Userstamp插件扩展了 ActiveRecord::Base,以添加对'创建者','更新程序'和'deleter'属性的自动更新。 它是基于 ActiveRecord::Timesta
在Rails开发中,为了增强用户体验,常常需要使用JavaScript来处理日期选择和管理。这篇博客“rails中使用javascript日期控件”探讨的就是如何在Rails应用中集成JavaScript日期控件,特别是通过一个名为WebCalendar....
Barista 可以简单透明的方式让你的 Rails 3 应用支持 CoffeeScript 脚本。 标签:Rails
总的来说,了解和熟练掌握Rails 3.1和Cucumber-Rails 1.2.0的用法,对于任何希望在Ruby on Rails环境中进行高效、高质量开发的团队来说都是至关重要的。通过阅读相关的博客文章(如给出的链接),开发者可以深入学习...
Ruby的语法优雅,支持块、闭包和元编程,这使得Ruby在编写Rails应用时能够实现高度的灵活性和可扩展性。 **Rails框架核心组件** 1. **模型(Model)**:模型是应用的核心,负责处理数据和业务逻辑。ActiveRecord是...
标签 "源码" 暗示了可能涉及Rails的源代码分析或自定义扩展。Rails是开源的,开发者可以深入研究其内部机制,理解工作原理,甚至为框架贡献代码。 标签 "工具" 可能意味着讨论到了与Rails开发相关的工具,如集成...
本书《Component-Based Rails Applications》主要介绍了如何使用Rails引擎(Rails ...这种基于组件的设计理念,能够让Rails应用在大型项目中保持灵活和可扩展,同时能够方便地集成第三方模块,提高开发和部署的速度。
书中不仅讲解了Rails的核心概念,还介绍了如何利用Rails构建高效、可扩展的Web应用程序。 #### Rails Routing 书中详细介绍了Rails的路由系统,这是一个关键组件,负责将URL映射到控制器和动作上。理解Rails的路由...
- **在Rails中使用ActionView**:指导如何在Rails应用中集成ActionView。 - **模板、局部视图和布局**:说明如何创建和使用模板、局部视图以及布局。 - **局部布局**:介绍局部视图的布局方式。 - **视图路径**:...
描述中的 "ruby and rails 的框架rails-2.3.3.zip" 提到的是 Rails 的另一个版本 2.3.3,尽管与标题中的版本号不完全匹配,但我们可以推断这是关于 Rails 2.3.x 系列的讨论。这个压缩包很可能包含了 Rails 框架的源...
在Rails中,MVC架构模式被充分地利用: 1. **Model(模型)**:负责处理应用程序数据逻辑的部分,通常对应于一个数据库表。 2. **View(视图)**:用户界面部分,展示模型返回的数据。 3. **Controller(控制器)**...
Paperclip 是 Rails 框架的一个插件,用于扩展 ActiveRecord 以支持简单的文件附件的功能。 标签:Paperclip
在这个"rails本地安装包完整版"中,包含了Rails 2.1.0版本的关键组件,这些组件是Rails框架的核心部分。 1. **activesupport-2.1.0.gem**:ActiveSupport是Rails的一个重要库,提供了许多实用的工具和方法,如时间...
在Rails项目中,我们首先需要了解的是项目的目录结构。一个标准的Rails应用会包含以下关键部分: 1. **app**:应用程序的核心,包括模型(models)、视图(views)和控制器(controllers)。模型负责业务逻辑和数据...
在Rails中,Ruby的元编程能力使得框架能够灵活地自定义和扩展。 Rails的核心理念是DRY(Don't Repeat Yourself),鼓励代码重用,避免重复编写相似的代码。此外,它还提供了大量的内置功能和库,如ActiveRecord用于...
Ruby on Rails,简称Rails,是一种基于Ruby语言的开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构...同时,Rails社区的活跃度高,有大量的插件和 gems 可供扩展功能,为开发者提供了丰富的资源和支持。