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
- 浏览 824
- 评论(3)
- 论坛回复 / 浏览 (3 / 2513)
- 查看更多
相关推荐
SitePoint[1].Simply.Rails.2.2nd.Edition.May.2008.pdf
ruby on rails 是眼下比较流行的开放框架,该电子书主要描述rails22新添功能。希望对各初次接触rails或者要迁移自己项目的人有帮助。
ruby on rails最新版 这是本人精心收集的重要软件
rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails ...
[Pragmatic Bookshelf] Crafting Rails Applications Expert Practices for Everyday Rails Development (E-Book) ☆ 图书概要:☆ Rails 3 is a huge step forward. You can now easily extend the framework, ...
Ruby on Rails Guides v2 - Ruby on Rails 4.2.5
ruby on rails 2.1新特性介绍(中文版)
《Ruby on Rails Tutorial》中文版(原书第2版,涵盖 Rails 4) Ruby 是一门很美的计算机语言,其设计原则就是“让编程人员快乐”。David Heinemeier Hansson 就是看重了这一点,才在开发 Rails 框架时选择了 Ruby...
一个用Ruby on Rails搭建的图片分享的网站项目.完整源代码
《Rails之道》按照Rails的各个子系统进行组织编排,分别介绍了Rails的环境、初始过程、配置和日志记录,Rails的分配器、控制器、页面生成和路由,REST、资源和Rails,ActiveRecord的基础、关联、验证和高级技巧,...
本资源是参照rails敏捷开发第四版书中的例子,rails的版本是rails3.2.6
web开发敏捷之道-rails第二版,下载后因为版本的更新已经程序登录上的一些问题进行的代码调整。目前在最新版本上可以运行
Bootstrap 3 和 Rails 4(样例用的是Ruby 2.1.1,Rails 4.1.4) Table of Contents Preface 1 Chapter 1: Introducing Web Application Development in Rails 7 Why Bootstrap with Rails? 8 Setting up a Todo ...
adminlte-rails, AdminLTE Rails gem 将AdminLTE主题与 Rails 资产管道集成 AdminLTE Rails gem AdminLTE 是后端的高级 Bootstrap 主题。英镑 AdminLTE Rails gem 与 Rails 资产管道集成了英镑AdminLTE主题。安装将...
rails资料集合最新的
使用Rails构建可伸缩和可维护API的最佳方法
中文世界唯一一本Rails 4.0.0 + Ruby 2.0.0 的自學書籍
使用Aptana+Rails开发Rails Web应用 有Aptana的安装配置等等,中文
Ruby on Rails helps you produce high-quality, beautiful-looking web applications quickly. You concentrate on creating the application, and Rails takes care of the details., Tens of thousands of ...