`

一个rails代码优化例子

阅读更多
查询是mongo mapper的
    def search_followers options, index
      options = inner_option_convert options
      follow_list = options[:searchterm].blank? ? index.followers_and_dates : index.followers_and_dates.find_all{|follow| follow[:follower].email =~ /.*#{options[:searchterm]}.*/} 
      follow_list = follow_list.sort_by{|follow| follow[:follower].email} if options[:sort_by] == 'name'
      follow_list = follow_list.sort_by{|follow| follow[:date]} if options[:sort_by] == 'date'
      follow_list.collect{|follow| follow[:follower]}.paginate( options )
    end
    
    def search_alerts options, index
      options = inner_option_convert options
      alert_list = index.alerts
      alert_list = alert_list.sort_by{|alert| alert.created_at} if options[:sort_by] == 'date' 
      alert_list = alert_list.sort_by{|alert| alert.alert_rule._type } if options[:sort_by] == 'type'
      alert_list = alert_list.collect{|alert| alert if alert.category == options[:filter]}.compact unless options[:filter] == 'all'
      alert_list.paginate( options )        
    end



之后变成


    def search_followers options, index
      options = inner_option_convert options
    if options[:sort_by] == 'date'
      u_ids = User.all( :conditions => {:email => /.*#{options[:searchterm]}.*/i }).map(&:id)
      following = Following.all( :conditions => { :index_id => index.id, :follower_id.in =>  u_ids }, :order => "created_at desc")
      f_ids = following.map(&:follower_id)
      user_hash = User.find(f_ids).group_by(&:id)
      f_ids.collect{|id| user_hash[id][0]}.paginate( options )
    else
      f_ids = Following.all( :conditions => { "index_id" => index.id }).map(&:follower_id)
      User.all( :conditions => {:email => /.*#{options[:searchterm]}.*/i, :id.in => f_ids }, :order => 'email asc').paginate( options )
    end  
    end
    
    def search_alerts options, index
      options = inner_option_convert options
      sort_by = case options[:sort_by]
              when 'type' : 'category asc'
              else 'created_at desc'
              end
      condition= { "index_id" => index.id } 
      condition["category"] = options[:filter] unless options[:filter].blank? or options[:filter] == 'all'
      alert_list = Alert::Alert.all( :conditions => condition, :order=> sort_by )
      alert_list.paginate( options )        
    end
分享到:
评论

相关推荐

    Ruby on Rails入门例子

    在"Ruby on Rails入门例子"中,你可能会学习如何创建一个简单的Rails应用。首先,你需要安装Ruby和Rails环境,然后使用`rails new`命令生成一个新的项目。接下来,会介绍如何创建控制器、模型和视图。例如,创建一个...

    rails 项目起步示例

    Rails是Ruby语言的一个著名Web开发框架,全称为Ruby on Rails,它遵循MVC(Model-View-Controller)架构模式,旨在提高开发效率和代码可读性。本示例"rails项目起步示例"是一个购物系统,非常适合初学者入门学习。 ...

    Ruby on Rails入门经典-例子

    Ruby on Rails,简称RoR,是由David Heinemeier Hansson基于Ruby语言开发的一款开源Web应用程序框架,它遵循MVC(模型...学习过程中,你可以逐步理解Rails的优雅设计和强大功能,为成为一个熟练的Rails开发者奠定基础。

    rails的经典学习项目

    标签"rails,例子"进一步确认了这是一个关于Rails框架的示例代码或教程。Rails的例子通常包含了从创建新的Rails应用开始,一直到部署上线的全部步骤,包括数据库迁移、路由设置、控制器和模型的编写、视图的渲染以及...

    Rails上的API:使用Rails构建REST APIAPIs on Rails: Building REST APIs with Rails

    假设我们需要为一个博客系统开发用户管理的RESTful API,下面是一个简化的例子: 1. **创建模型**:首先定义User模型,包含用户名、密码等属性。 2. **设置路由**:使用Rails的`routes.rb`文件定义对应的路由规则,...

    Agile Web Development with Rails-Second Edition-Beta一书例子

    在本压缩包文件中,包含了一个名为"demo"的子文件夹,这很可能是书籍中介绍的示例代码或应用的演示版本。 Rails是基于Ruby语言的开源Web应用程序框架,它遵循Model-View-Controller(MVC)设计模式,强调“约定优于...

    举例理解Ruby on Rails的页面缓存机制

    Ruby on Rails 是一个流行的 web 开发框架,以其高效和简洁的代码著称。在 Ruby on Rails 中,页面缓存是一种优化性能的技术,尤其适用于那些内容相对静态或者对用户个性化要求不高的网页。页面缓存的工作原理是将...

    Ruby on Rails 3.2 Tutorial

    Rails是一个基于Ruby语言的开源Web应用框架,遵循MVC(模型-视图-控制器)架构模式,以其DRY(Don't Repeat Yourself)原则和BDD(行为驱动开发)理念而广受欢迎。 本教程覆盖了Rails 3.2版本,该版本在Rails发展史...

    Rails 4 Days - Chinese

    Rails是Ruby语言的一个流行Web开发框架,以其“DRY”(Don't Repeat Yourself)和“Convention Over Configuration”(约定优于配置)的理念闻名,极大地提升了开发效率。这本书详细介绍了如何利用Rails 4版本进行...

    Rails相关电子书汇总二

    Rails是Ruby编程语言的一个流行Web应用框架,它以其MVC(模型-视图-控制器)架构模式和简洁的代码风格而闻名。Active Record是Rails框架的一部分,它提供了一个ORM(对象关系映射)系统,使得开发者可以以面向对象的...

    用Ext Scaffold插件打造Rails的Ext风格

    7. **示例应用**:可能提供了一个实际的例子,演示如何从零开始创建一个完整的应用,展示整个流程和关键代码。 标签中的“源码”意味着这份文档可能包含了一些示例代码片段,帮助读者更好地理解和应用这些概念。而...

    Ajax on Rails

    总的来说,Ajax on Rails 结合了AJAX的强大交互性和Rails的简洁开发体验,为构建现代Web应用提供了一个高效且富有表现力的平台。开发者可以通过学习和掌握这两个技术,构建出响应迅速、用户体验优良的应用程序。

    Apress Pro ActiveRecord Databases with Ruby and Rails.pdf

    - 定义了一个`has_many`关联关系,表示一个用户可以拥有多个帖子。 - 添加了一个计算属性`full_name`,用于返回用户的全名。 #### 六、进阶主题 - **多数据库支持**:Rails支持同时连接到多个数据库,这对于大型...

    在Ruby on Rails中优化ActiveRecord的方法

    通过以上这些方法,开发者可以在使用ActiveRecord时有效地优化数据库操作,提高Ruby on Rails应用的性能,同时保持代码的简洁性和可维护性。不过,优化的过程应始终基于实际应用的性能需求和瓶颈,以实现最佳效果。

    Ruby-RecordCache在Rails3中缓存ActiveModelRecords

    Ruby on Rails 是一个流行的Web开发框架,它提供了许多工具和库来优化应用程序性能。在Rails 3中,开发者经常面临数据库查询频繁,导致性能瓶颈的问题。为了解决这个问题,RecordCache是一个有效的解决方案,它专门...

    URL重写的一个例子

    在提供的压缩包`UrlReWriterModel`中,很可能包含了实现URL重写的一个模型或示例代码。这个模型可能包括了配置文件、URL重写规则以及对应的控制器或处理程序。例如,如果这是一个ASP.NET的示例,`web.config`文件里...

    Ruby-ActionPolicy是RubyRails应用程序的授权框架

    Ruby-ActionPolicy是一个专门为Ruby on Rails应用程序设计的授权框架,它的目标是帮助开发者在应用中实现细粒度的权限控制,以确保用户只能访问他们被允许的数据和执行被授权的操作。ActionPolicy借鉴了如Pundit和...

    Linux系统平台上安装和配置Ruby on Rails

    在Linux系统上安装和配置Ruby on Rails是一个常见的任务,特别是在开发Web应用程序时。Ruby on Rails(RoR)是一个基于Ruby语言的开源Web应用框架,它遵循模型-视图-控制器(MVC)架构模式,强调简洁和生产力。在...

    JAVA上百实例源码以及开源项目源代码

    Message-Driven Bean EJB实例源代码 2个目标文件 摘要:Java源码,初学实例,EJB实例 Message-Driven Bean EJB实例源代码,演示一个接收购物订单的消息驱动Bean,处理这个订单同时通过e-mail的形式 //给客户发一个感谢...

Global site tag (gtag.js) - Google Analytics