`

Ruby继承类优化示例

阅读更多
在Rails的原则里有简化Controller,丰富Model的说法。下面将用一个示例展示一个简单的继承优化。特别是你的method里有一个写变化的self变量的时候。
假设我们有如下的Model
class SubjectMatterExpert < User
 include HashCodeCreatorModule
 def make_activation_code
   self.deleted_at = nil
   self.activation_code ||= make_hash_code
 end
end

class Administrator < User
 include HashCodeCreatorModule
 def make_activation_code
   self.deleted_at = nil
   self.activation_code ||= make_hash_code
 end
end


我们可以通过继承的使用简化代码如下SubjectMatterExpert Administrator

class SubjectMatterExpert < User
end

class Administrator < User
end

class User
 include HashCodeCreatorModule
 def make_activation_code
   self.deleted_at = nil
   self.activation_code ||= make_hash_code
 end


那么我们也可以在测试中这么使用:

it 'should create an activation code' do
  admin = Factory(:administrator)
  admin.make_activation_code
  admin.activation_code.should_not be_empty
end


分享到:
评论

相关推荐

    Ruby优化继承类实例

    下面将用一个示例展示一个简单的继承优化。特别是你的method里有一个写变化的self变量的时候。 假设我们有如下的Model 代码如下: class SubjectMatterExpert &lt; User   include HashCodeCreatorModule   def...

    Ruby-MongoMapper针对Mongo的一个Ruby对象映射器

    1. **模型定义**:你可以定义一个Ruby类并继承自`MongoMapper::Document`,然后使用`key`方法声明属性,这类似于ActiveRecord中的`attr_accessor`。例如: ```ruby class User include MongoMapper::Document ...

    Ruby语言中文教程,加示例程序,张开川著

    教程会介绍类的定义、继承、方法的创建和调用、模块的使用以及消息传递机制。 3. **块和 Proc**:Ruby中的块允许你在代码中定义匿名函数,通常与迭代器一起使用。Proc是块的可存储形式,它可以赋值给变量,作为参数...

    Ruby-fastrubyRuby编写快速收集常见Ruby惯用语

    该项目专注于常见的Ruby惯用语,并提供了一系列的代码改进示例,以提升代码性能。下面将详细探讨Ruby开发中的代码分析和度量,以及如何利用`fast-ruby` 提升代码效率。 1. **Ruby惯用语和最佳实践** Ruby中有很多...

    Ruby-RubyChina社区的精华帖

    了解类、对象、继承、模块(Module)以及 Mixin 是掌握Ruby OOP的关键。 2. **块(Block)、 Proc 和 Lambda**:Ruby支持块(匿名函数)的定义和使用,Proc和Lambda是块的两种可存储形式,它们之间的区别在于调用时...

    ruby源代码8

    1. 学习面向对象编程:Ruby是面向对象编程的典范,了解其对象模型和类的继承、模块的混入等机制,能提升你对面向对象编程的理解。 2. 探索元编程:Ruby支持元编程,允许在运行时修改或创建代码,这是许多高级特性如...

    Ruby程序设计资料大全

    9. **Ruby的性能优化**:虽然Ruby相对解释型语言来说性能略低,但通过优化代码结构、利用缓存、选择合适的数据结构等方法,可以显著提高运行效率。 10. **社区和资源**:Ruby拥有活跃的社区,如Ruby China、Stack ...

    Ruby语言教程.docx

    - **代码优化**:学会识别并优化性能瓶颈,提高代码质量和运行效率。 - **团队协作**:熟悉版本控制系统如Git,掌握团队协作的最佳实践。 #### 八、持续学习与技术更新 - **关注官方文档**:定期查阅Ruby官方文档以...

    ruby cookbook

    2. **面向对象编程**:详细讲解Ruby的面向对象特性,包括类的定义、继承、模块的使用、方法的定义与调用、对象的创建与销毁等。 3. **块和闭包**:Ruby的块是代码块的抽象,可以与方法一起使用,常用于迭代或条件...

    Ruby入门培训ppt/pdf及代码

    5. **调试和性能优化**:讲解如何使用Ruby的调试工具,以及优化代码性能的策略。 提供的代码文件可能包含了一些练习或示例代码,用于配合PPT和PDF的内容,让学习者亲手实践并加深理解。 总的来说,这个资源为Ruby...

    Programming.Ruby(第2版)中文版

    6. 命名空间:Ruby通过模块(Module)提供命名空间,避免了全局变量冲突,同时也支持类的多重继承。 书中详细讲解了Ruby的基础语法,如变量、常量、运算符、流程控制语句、函数、类和模块的定义和使用。此外,还...

    Crystal示例代码

    Crystal支持面向对象编程,包括类、对象、继承、多态等概念。示例代码可能会涵盖如何创建和使用这些概念。 5. **函数式编程**: Crystal也支持函数式编程特性,如高阶函数、闭包和惰性序列。这些功能可以帮助编写...

    Ruby中钩子方法的运用实例解析

    在Ruby编程语言中,钩子方法(Hook Methods)是一类特殊的方法,它们允许开发者在特定事件发生时执行自定义代码。这些事件通常涉及到类、模块或对象的生命周期,例如类的继承、模块的包含、方法的添加或删除等。钩子...

    Build.Your.Own.Ruby.on.Rails.Web.Applications.Feb.2007.pdf

    - **面向对象编程**:讲解Ruby中的类、对象、继承等OOP特性,这是理解和使用Rails框架的关键。 ### 4. Rails揭秘 - **框架内部机制**:深入探讨Rails的内部工作原理,包括路由、中间件、配置等。 - **Rails哲学**...

    Rubyist 1.9

    通过示例和练习,读者可以掌握如何定义类,实现继承,以及使用超类和子类来构建复杂的应用程序架构。 #### 模块和程序组织 模块是Ruby中用于封装和组织代码的另一种方式。《Rubyist 1.9》详细阐述了模块的使用,...

    Rubylearning 教程 - 中文版

    - **面向对象编程**:介绍 Ruby 中的类、继承、封装等概念。 - **模块与混合**:解释如何使用模块来扩展类的功能。 - **元编程**:探讨 Ruby 中动态语言特性的运用,如运行时修改类行为。 - **并发与多线程**:介绍 ...

    rack教程(ruby)

    开发者可以通过继承`Rack::Server`类并重写相关方法来定制启动行为。 #### 5. 中间件:第二轮 ##### 5.1 再议响应体 在Rack中,响应体可以是一个字符串、数组或者迭代器。对于大型文件或者其他需要按需生成的响应...

    ProgrammingRuby:学习Ruby基础知识

    类定义了对象的结构和行为,模块则提供了命名空间和混合-in功能,继承允许创建新的类并重用现有类的特性。 3. **方法和块** 方法是实现代码重用的关键,Ruby支持定义和调用方法。块是Ruby的独特特性,类似于其他...

Global site tag (gtag.js) - Google Analytics