`
jsntghf
  • 浏览: 2533596 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Rails2.2新方法试用

阅读更多

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


非常简单,但是比较实用。

分享到:
评论
3 楼 kilik52 2009-11-29  
多谢楼上。
2 楼 yangzhihuan 2009-11-27  
楼上的,可以这样:
module ActiveRecord
  class Base
    def self.string_inquirer(prop)
      define_method prop.to_s do
        ActiveSupport::StringInquirer.new("#{self.send(prop.to_s)}")
      end
    end
  end
end


当你想用这个特性的时候,就可以:
class YourClass < ActiveRecord::Base

  string_inquirer :ooxx

end
1 楼 kilik52 2009-11-26  
如果这段:
def status  
  ActiveSupport::StringInquirer.new("#{self.status}")  
end  


能够变成:
string_inquirer :status

就好了。

相关推荐

    rails22新添功能.pdf

    ### Ruby on Rails 2.2 新添功能解析 #### 概述 《Rails22新添功能.pdf》是一本详尽介绍了Ruby on Rails 2.2版本新增功能的专业电子书。Ruby on Rails作为一款热门的Web开发框架,一直受到开发者们的青睐。Rails ...

    SitePoint[1].Simply.Rails.2.2nd.Edition.May.2008.pdf

    6. **辅助方法、表单和布局**:讲解Rails中的辅助方法使用,如何创建和处理表单,以及如何使用布局文件统一页面样式。 7. **Ajax与Web 2.0**:介绍如何在Rails应用中集成Ajax技术,实现异步数据加载和交互式用户...

    ruby on rails最新版

    随着技术的不断发展,Rails会定期发布新版本,以引入新的功能、优化性能和修复已知问题。使用最新版可以确保开发者能利用到最前沿的技术,并且通常意味着更好的安全性和社区支持。 描述中的“这是本人精心收集的...

    Rails 101 入门电子书

    ### Rails 101 入门电子书知识点详解 #### 一、简介 《Rails 101 入门电子书》是一本非常适合初学者直接入门的书籍,它由xdite编写并出版于2014年6月10日。本书主要针对的是希望学习Ruby on Rails框架的读者,特别...

    Rails101_by_rails4.0

    综上所述,《Rails101_by_rails4.0》不仅是一本Rails自学书籍,它还代表了一种新的出版和学习理念。对于希望学习Rails框架,尤其是希望学习Rails 4.0版本的开发者来说,这本书提供了全面而系统的知识体系,并结合...

    Rails项目源代码

    Rails的路由系统将URL映射到控制器的行动上,如`/sign_up`可能对应`users#new`,用于创建新用户。`config/routes.rb`文件定义了所有路由规则,包括资源路由、命名路由和自定义路由。 6. **视图模板**: 视图使用...

    web开发之rails最新调试通过购物车代码

    Rails版本更新可能会引入新的特性或改变旧的行为,因此代码调整是必要的。 9. **安全和认证**:"程序登录上的一些问题进行的代码调整"可能指的是添加用户身份验证,确保只有登录用户才能操作自己的购物车。这可能...

    ruby on rails 开发环境包(ruby1.8.7,rails2.2.3)

    3. **创建新项目**:使用Rails命令行工具创建一个新的Rails项目。在终端中输入`rails new project_name -v=2.2.3`,其中project_name替换为你的项目名称。 4. **数据库配置**:Rails默认使用SQLite数据库,但你可以...

    Ruby on Rails Guides v2 - Ruby on Rails 4.2.5

    - **步骤**:通过命令行使用`rails new project_name`来初始化一个新的Rails项目。 - **结构**:新项目将包含默认的目录结构,如`app`、`config`、`db`等,分别用于存放应用程序代码、配置文件、数据库迁移脚本等。 ...

    rails2-sample

    从给定的文件信息来看,我们正在探讨的是一本关于Ruby on Rails的书籍,书名为《Simply Rails2》,作者是Patrick Lenz。本书旨在为初学者提供深入理解Ruby on Rails框架的指南,从基础概念到高级主题均有涵盖,是...

    RailsSpace

    此外,还会介绍如何设置Rails项目的结构,包括如何创建一个新的Rails应用。 ##### 2.2 用户模型设计 第三章“Modeling users”深入探讨了如何设计用户模型,这是构建任何社交网络的基础。本章将涵盖如何定义用户...

    关于rails 3.1 cucumber-rails 1.2.0

    Rails 3.1 和 Cucumber-Rails 1.2.0 是两个在Web开发领域非常重要的工具,尤其对于Ruby on Rails框架的测试和自动化流程。本文将深入探讨这两个组件,以及它们如何协同工作来增强软件开发的效率和质量。 首先,...

    使用Aptana+Rails开发Rails Web应用(中文)

    例如,要在Rails应用中创建一个新的资源,如博客文章,你需要在models目录下创建一个名为`post.rb`的文件,定义Post类,并设置属性如标题和内容。在controllers目录下创建`posts_controller.rb`,定义控制器方法,如...

    Ruby on Rails安装指南(Ruby 1.8.6+Rails 2.0.2)

    Ruby on Rails 安装指南 Ruby on Rails 安装指南是指安装 Ruby 1.8.6 和 Rails 2.0.2 的详细步骤。首先,需要下载 Ruby One-Click Installer ...同时,也可以学习到 Ruby、Rails 和 Mongrel 的基本概念和使用方法。

    Rails recipes

    Rails Recipes是一本针对Ruby on Rails框架的实用书籍,它收集了一系列高效解决问题的技巧和方法,也被称为“Rails开发者的宝典”。作者们通过分享自己的经验和见解,为Rails程序员提供了一本既有实际操作指导又有...

    rails指南 中文版

    11. **Rails Generators**:Rails的生成器可以帮助快速创建新的控制器、模型、迁移等,大大提高了开发效率。 12. **Migrations**:Rails的迁移机制允许开发者通过Ruby代码来管理数据库结构的变化,使得数据库版本...

    rails2.0的配置方法

    ### Rails 2.0 的配置方法 #### 一、引言 Rails 2.0作为Ruby on Rails(简称ROR)框架的一个重要版本,在Web开发领域具有不可忽视的地位。本篇将详细介绍Rails 2.0的配置过程及注意事项,帮助初学者快速上手并深入...

    关于ruby的几本电子书

    此外,2.2版本的Rails引入了一些新的特性和改进,例如ActiveRecord的性能优化、插件管理的改进以及对ActionMailer的增强等。 学习这两本书,对于想要深入理解Ruby语言和掌握Ruby on Rails开发的程序员来说,无疑是...

Global site tag (gtag.js) - Google Analytics