清单3
在 清单 3 中的两个类中您可能会注意到,Ruby 支持一种定义属性的简写方式:attr_reader 和 attr_writer。因为使用了这种方式,所以可以在 Word 类中设置 和获取 对应的属性,如清单 7 所示:
清单 7. attr_reader 和 attr_writer 的作用
attr_reader 和 attr_writer 都不是关键词,而是 Ruby 中的实际方法(在 Module 类中),它们以符号作为参数。符号 是前面有冒号(:)的任何变量,更妙的是符号本身也是对象!
注意,因为在 清单 3 中使 synonyms 成为只读的,所以 Ruby 拒绝执行清单 7 中的最后一行代码。另外,还可以使用 attr_accessor 方法编写属性声明代码,指出属性是既可读又 可写的。
module Dictionary class Word attr_reader :spelling, :part_of_speech, :definitions, :synonyms attr_writer :spelling, :part_of_speech def initialize(spelling, part_of_speech, definitions = [], synonyms = []) @spelling = spelling @part_of_speech = part_of_speech definitions.each{ |idef| idef.word = self} @definitions = definitions @synonyms = synonyms end def add_definition(definition) definition.word = self if definition.word != self @definitions << definition end def add_synonym(synonym) @synonyms << synonym end end class Definition attr_reader :definition, :word, :example_sentences attr_writer :definition, :word def initialize(definition, word = nil, example_sentences = []) @definition = definition @word = word @example_sentences = example_sentences end end end
在 清单 3 中的两个类中您可能会注意到,Ruby 支持一种定义属性的简写方式:attr_reader 和 attr_writer。因为使用了这种方式,所以可以在 Word 类中设置 和获取 对应的属性,如清单 7 所示:
清单 7. attr_reader 和 attr_writer 的作用
require "dictionary" wrd = Dictionary::Word.new("turpitude", "Noun") wrd.part_of_speech # "Noun" wrd.spelling # "turpitude" wrd.spelling = "bibulous" wrd.spelling # "bibulous" syns = [Dictionary::Word.new("absorptive", "Adjective"), Dictionary::Word.new("imbibing", "Noun") ] # Danger! wrd.synonyms = syns = syns #Exception: undefined method `synonyms='...
attr_reader 和 attr_writer 都不是关键词,而是 Ruby 中的实际方法(在 Module 类中),它们以符号作为参数。符号 是前面有冒号(:)的任何变量,更妙的是符号本身也是对象!
注意,因为在 清单 3 中使 synonyms 成为只读的,所以 Ruby 拒绝执行清单 7 中的最后一行代码。另外,还可以使用 attr_accessor 方法编写属性声明代码,指出属性是既可读又 可写的。
发表评论
-
使用 Capistrano 对rails app进行快速部署
2011-02-23 15:05 1806仅转载了,还没有用过,如果有问题可留言,大家一起讨论 在进行 ... -
ruby进行web serveice的方法
2011-02-15 14:37 856require 'soap/wsdlDriver' #url ... -
友好的登录系统
2011-01-28 10:54 703友好的登录系统 按照目前的代码,如果管理员尝试在未登录的状态下 ... -
第三版
2011-01-27 15:36 0view格式化价格 <%= number_to_curr ... -
用户操作数据库记录
2011-01-25 15:16 881今天我们看看怎样在数据库记录用户操作 db/migrate/0 ... -
Ruby中 respond_to? 和 send 的用法
2011-01-25 14:24 1282obj = Object.new if obj ... -
rails 路由
2011-01-25 14:17 11814 正则路由 Rails支持 ... -
rails 验证自定义方法
2011-01-25 11:37 1596可以自定义validate(), 这个方法在每次保存数据时都会 ... -
flash-notice自动消失
2011-01-25 11:12 1434flash 提示的自动消失: <body onloa ... -
密码加密和解密
2011-01-25 11:11 1230two way crypt: #http://crypt. ... -
开发环境页面直接调试
2011-01-25 11:06 694#首先,在layout里边的合适地方添加debug,并且使 ... -
对静态页面进行缓存
2011-01-24 14:35 958对于静态站点我们可以利用Rails的cache来管理,如在co ... -
rvm部署rails3和ruby192
2011-01-21 10:39 11111. Installing RVM $ sudo gem ... -
rails 加载不同插件设置
2010-12-31 14:49 406config.plugins = [ :all ] co ... -
参考rails 下拉
2010-12-31 14:47 668对于多数的model的select列表,我都会用model属性 ... -
自定义form提示
2010-12-31 10:53 722自定义form错误提示 application_contro ... -
提高rails开发模式下静态页加载速度
2010-12-31 10:44 892http://github.com/thedarkone/ra ... -
rails 连接多个数据库
2010-12-30 10:31 790首先在database.yml中加入以下代码,其中cg_clo ... -
瘦controller,富model
2010-12-28 14:02 758----先看这么一段rhtml代码:渲染模板中加入了这么多的逻 ... -
rake 命令一览
2010-12-28 11:21 1017rake db:abort_if_pending_migr ...
相关推荐
综合以上信息,学习和掌握Rails需要理解其核心组件和设计理念,熟练使用相关工具,阅读源码以加深对框架运作的理解,并通过实践项目来巩固理论知识。Rails是一个强大且高效的Web开发框架,它简化了许多常见的开发...
本书主要针对的是希望学习Ruby on Rails框架的读者,特别是那些想要从零开始掌握这项技术的新手。 #### 二、作者介绍与背景 - **作者**: xdite,一位经验丰富的开发者,专注于Ruby on Rails框架。 - **作品**: ...
为了确保读者能够通过实践加深理解,书中还安排了一系列练习作业,从最基础的“Hello World”开始,逐步过渡到更复杂的概念,如Rails的Routing(路由)机制。路由机制是Web应用中一个非常核心的概念,它定义了不同的...
这个Rails项目提供了学习和研究Web开发的机会,特别是对于Ruby on Rails新手,可以通过阅读和理解源代码来提升技能,了解实际应用中Rails的用法。同时,对于有经验的开发者,这个项目也可以作为一个起点,进行二次...
通过这种方式,Cucumber-Rails帮助团队确保代码按照预期运行,同时提供了一种非技术人员也能理解的测试文档。 在`support`目录下,开发者可以放置一些辅助文件,例如World类(用于扩展Cucumber的上下文)、Hooks...
对于想要深入了解Rails框架并构建高性能Web应用的开发者来说,这些知识是必不可少的。 #### 10. Rails Plugins(Rails插件) Rails插件是扩展框架功能的有效方式。本章节将介绍如何安装、使用和开发自己的Rails...
Rails Recipes是Rails社区中的重要资源,适合那些希望提高开发技能并深入理解Rails框架的开发者。特别是在Rails社区快速发展,各种新技术和概念层出不穷的背景下,这本书为开发者提供了一个宝贵的参考,帮助他们保持...
标题 "Rails相关电子书汇总" 暗示了这个压缩包包含了关于Ruby on Rails框架的电子书籍资源。Ruby on Rails,通常简称为Rails...对于希望深入理解Rails框架或想要提升Web开发技能的开发者来说,这本书是一个宝贵的资源。
Rails指南中文版是针对Ruby on Rails框架的一份详尽教程,旨在帮助开发者深入理解并熟练掌握这个强大的Web应用开发工具。Ruby on Rails(简称Rails)是一个基于Ruby语言的开源Web应用框架,它遵循MVC(Model-View-...
在标题和描述中提到的“举例理解Ruby on Rails的页面缓存机制”,主要是指通过具体的例子来阐述如何在实际项目中运用页面缓存。例如,IBM 官方技术文档中的内容可能包含以下示例: 1. **启用页面缓存**:在 Rails ...
- **重要概念**:本指南旨在帮助读者深入理解Ruby on Rails(以下简称Rails)4.2.5版本的核心功能与最佳实践。 - **基础假设**:读者已经具备一定的Ruby编程基础,并对Web开发有一定的了解。 #### 二、什么是Rails...
标题 "rails2.3.2" 指的是 Ruby on Rails 框架的一个特定版本,即 2.3.2。Ruby on Rails(通常...虽然现在已经有许多更新的 Rails 版本,但 Rails 2.3.x 对于理解 Rails 的基本原则和工作方式仍具有重要的历史价值。
**高级Rails** Rails,全称为Ruby on Rails,是一款基于Ruby..."Advanced Rails"这本书是进一步提升Rails技能的宝贵资料,通过阅读和实践,开发者能够深入理解Rails框架,解决复杂问题,创建高效、可扩展的Web应用。
Rails是Ruby语言的一个著名Web开发...随着对Rails框架的深入理解,你可以逐步构建出功能丰富的购物系统,包括商品浏览、购物车、订单处理等功能。在实际操作中,参考Rails的官方文档和社区资源将是提升技能的好方法。
1. **轻量级结构**:Rails API剥离了Web展示层的组件,如Action View和Asset Pipeline,从而减少了不必要的依赖和加载时间,提高了API服务的响应速度。 2. **更好的性能**:由于API通常处理的是JSON数据而非HTML,...
- 说明了本书的结构,这有助于读者按顺序或按需阅读和理解相关主题。 在掌握了以上知识点后,开发人员能够更加系统地了解如何利用Rails Engine来实现模块化的Rails应用,从而提高代码的复用性、可维护性和扩展性。...
Rails是Ruby语言的一个著名Web应用框架,以敏捷开发和“约定优于配置”...通过对这些版本的源码进行分析和学习,开发者不仅可以提升对Rails框架的理解,还能在实际项目中运用这些知识,编写出更高效、更安全的Web应用。
在Ruby on Rails的源代码中,我们可以深入理解其内部工作原理,包括路由、数据库交互(ActiveRecord)、模板引擎(ERB或Haml)、测试工具(Rspec或Minitest)等核心组件。以下是一些关键知识点的详细解释: 1. **...
学习Rails的过程中,除了阅读文档,还可以参考在线教程、视频课程、社区论坛和开源项目,以加深理解和实践。Rails社区活跃,有许多优秀的资源可以帮助初学者快速上手。 总的来说,Ruby on Rails是一个强大的开发...