Rails2.2的ActiveSupport新增加了几个方法,非常有意思。在此列举其中的两个:StringInquirer和many?进行试用。
一、StringInquirer
有时候,我们有这样的需求,看一个用户是否是激活状态,数据是从数据库里查出来的:
user = User.find(params[:id])
user.status # => "active"
user.status == "active" # => true
user.status == "inactive" # => false
现在我们有了更好的方法:
class User
def status
ActiveSupport::StringInquirer.new("#{self.status}")
end
end
user = User.find(params[:id])
user.status # => "active"
user.status.active? # => true
user.status.inactive? # => false
user.status.xxx? # => false
二、many?
Enumerable模块里添加了一个many?方法。它和它的名字一样,它可以告诉你collection是否包括超过一个对象。
这个方法是 collection.size > 1 的别名(alias)。
[].many? # => false
[ 1 ].many? # => false
[ 1, 2 ].many? # => true
除例子里的格式外,这个方法还可以接受一个block。
x = %w{ a b c b c } # => ["a", "b", "c", "b", "c"]
x.many? # => true
x.many? { |y| y == 'a' } # => false
x.many? { |y| y == 'b' } # => true
people.many? { |p| p.age > 26 }
只有block里面的元素数量超过一个时才会返回true, 如果没有block的话,当collection包含超过一个对象时才返回true。
我自己实现了一个how_many(item)方法,来计算一个数组里有几个item:
def how_many(item)
return select{|y| y == item}.size
end
x = %w{ a b c b c }
x.how_many("a") # => 1
x.how_many("b") # => 2
x.how_many("c") # => 2
具体如何将这个方法加入模块中,可以参考http://www.iteye.com/topic/521123
非常简单,但是比较实用。
分享到:
- 2009-11-23 17:09
- 浏览 857
- 评论(3)
- 论坛回复 / 浏览 (3 / 2545)
- 查看更多
相关推荐
### Ruby on Rails 2.2 新添功能解析 #### 概述 《Rails22新添功能.pdf》是一本详尽介绍了Ruby on Rails 2.2版本新增功能的专业电子书。Ruby on Rails作为一款热门的Web开发框架,一直受到开发者们的青睐。Rails ...
6. **辅助方法、表单和布局**:讲解Rails中的辅助方法使用,如何创建和处理表单,以及如何使用布局文件统一页面样式。 7. **Ajax与Web 2.0**:介绍如何在Rails应用中集成Ajax技术,实现异步数据加载和交互式用户...
随着技术的不断发展,Rails会定期发布新版本,以引入新的功能、优化性能和修复已知问题。使用最新版可以确保开发者能利用到最前沿的技术,并且通常意味着更好的安全性和社区支持。 描述中的“这是本人精心收集的...
### Rails 101 入门电子书知识点详解 #### 一、简介 《Rails 101 入门电子书》是一本非常适合初学者直接入门的书籍,它由xdite编写并出版于2014年6月10日。本书主要针对的是希望学习Ruby on Rails框架的读者,特别...
综上所述,《Rails101_by_rails4.0》不仅是一本Rails自学书籍,它还代表了一种新的出版和学习理念。对于希望学习Rails框架,尤其是希望学习Rails 4.0版本的开发者来说,这本书提供了全面而系统的知识体系,并结合...
Rails的路由系统将URL映射到控制器的行动上,如`/sign_up`可能对应`users#new`,用于创建新用户。`config/routes.rb`文件定义了所有路由规则,包括资源路由、命名路由和自定义路由。 6. **视图模板**: 视图使用...
Rails版本更新可能会引入新的特性或改变旧的行为,因此代码调整是必要的。 9. **安全和认证**:"程序登录上的一些问题进行的代码调整"可能指的是添加用户身份验证,确保只有登录用户才能操作自己的购物车。这可能...
3. **创建新项目**:使用Rails命令行工具创建一个新的Rails项目。在终端中输入`rails new project_name -v=2.2.3`,其中project_name替换为你的项目名称。 4. **数据库配置**:Rails默认使用SQLite数据库,但你可以...
- **步骤**:通过命令行使用`rails new project_name`来初始化一个新的Rails项目。 - **结构**:新项目将包含默认的目录结构,如`app`、`config`、`db`等,分别用于存放应用程序代码、配置文件、数据库迁移脚本等。 ...
从给定的文件信息来看,我们正在探讨的是一本关于Ruby on Rails的书籍,书名为《Simply Rails2》,作者是Patrick Lenz。本书旨在为初学者提供深入理解Ruby on Rails框架的指南,从基础概念到高级主题均有涵盖,是...
此外,还会介绍如何设置Rails项目的结构,包括如何创建一个新的Rails应用。 ##### 2.2 用户模型设计 第三章“Modeling users”深入探讨了如何设计用户模型,这是构建任何社交网络的基础。本章将涵盖如何定义用户...
Rails 3.1 和 Cucumber-Rails 1.2.0 是两个在Web开发领域非常重要的工具,尤其对于Ruby on Rails框架的测试和自动化流程。本文将深入探讨这两个组件,以及它们如何协同工作来增强软件开发的效率和质量。 首先,...
例如,要在Rails应用中创建一个新的资源,如博客文章,你需要在models目录下创建一个名为`post.rb`的文件,定义Post类,并设置属性如标题和内容。在controllers目录下创建`posts_controller.rb`,定义控制器方法,如...
Ruby on Rails 安装指南 Ruby on Rails 安装指南是指安装 Ruby 1.8.6 和 Rails 2.0.2 的详细步骤。首先,需要下载 Ruby One-Click Installer ...同时,也可以学习到 Ruby、Rails 和 Mongrel 的基本概念和使用方法。
Rails Recipes是一本针对Ruby on Rails框架的实用书籍,它收集了一系列高效解决问题的技巧和方法,也被称为“Rails开发者的宝典”。作者们通过分享自己的经验和见解,为Rails程序员提供了一本既有实际操作指导又有...
11. **Rails Generators**:Rails的生成器可以帮助快速创建新的控制器、模型、迁移等,大大提高了开发效率。 12. **Migrations**:Rails的迁移机制允许开发者通过Ruby代码来管理数据库结构的变化,使得数据库版本...
### Rails 2.0 的配置方法 #### 一、引言 Rails 2.0作为Ruby on Rails(简称ROR)框架的一个重要版本,在Web开发领域具有不可忽视的地位。本篇将详细介绍Rails 2.0的配置过程及注意事项,帮助初学者快速上手并深入...
此外,2.2版本的Rails引入了一些新的特性和改进,例如ActiveRecord的性能优化、插件管理的改进以及对ActionMailer的增强等。 学习这两本书,对于想要深入理解Ruby语言和掌握Ruby on Rails开发的程序员来说,无疑是...