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

named_scope

阅读更多

 

class User < ActiveRecord::Base
  named_scope :active, :conditions => {:active => true}
  named_scope :inactive, :conditions => {:active => false}
  named_scope :recent, lambda { { :conditions => ['created_at > ?', 1.week.ago] } }
end

# Standard usage
User.active    # same as User.find(:all, :conditions => {:active => true})
User.inactive # same as User.find(:all, :conditions => {:active => false})
User.recent   # same as User.find(:all, :conditions => ['created_at > ?', 1.week.ago])

User.active.recent
  # same as:
  # User.with_scope(:conditions => {:active => true}) do
  #   User.find(:all, :conditions => ['created_at > ?', 1.week.ago])
  # end

 

Passing Arguments

 

class User < ActiveRecord::Base
  named_scope :registered, lambda { |time_ago| { :conditions => ['created_at > ?', time_ago] }
end

User.registered 7.days.ago # same as User.find(:all, :conditions => ['created_at > ?', 7.days.ago])

 

 

class Article < ActiveRecord::Base
  
  # Only get the first X results
  named_scope :limited, lambda { |num| { :limit => num } }

end

# Get the first 5 articles - instead of Article.find(:all, :limit => 5)
Article.limited(5)

 

 

class Article < ActiveRecord::Base
  
  # Only get the first X results.  If no arg is given then try to
  # use the per_page value that will_paginate uses.  If that
  # doesn't exist then use 10
  named_scope :limited, lambda { |*num|
    { :limit => num.flatten.first || (defined?(per_page) ? per_page : 10) }
  }

  def per_page; 15; end

end

# Get the first 15 articles
Article.limited

# Get the first 5 articles
Article.limited(5)

 

 

class Article < ActiveRecord::Base
  
  # Order the results by the given argument, or 'created_at DESC'
  # if no arg is given
  named_scope :ordered, lambda { |*order|
    { :order => order.flatten.first || 'created_at DESC' }
  }

end

# Get all articles ordered by 'created_at DESC'
Article.ordered #=> [<Article id: ...>, <..>]

# Get all articles ordered by 'updated_at DESC'
Article.ordered('updated_at DESC')

 

Named Scope Extensions

 

class User < ActiveRecord::Base
  named_scope :inactive, :conditions => {:active => false} do
    def activate
      each { |i| i.update_attribute(:active, true) }
    end
  end
end

# Re-activate all inactive users
User.inactive.activate

 

Anonymous Scopes

 

# Store named scopes
active = User.scoped(:conditions => {:active => true})
recent = User.scoped(:conditions => ['created_at > ?', 7.days.ago])

# Which can be combined
recent_active = recent.active

# And operated upon
recent_active.each { |u| ... }
分享到:
评论

相关推荐

    GongoDB:GongoDB 是一个适用于 PHP 5 的 SQL 友好 ORM,具有 named_scope 和流畅的查询构建器。 它通过将 named_scope 组合为 SQL 片段来组装查询。 适合动态构建复杂SQL

    它通过将 named_scope 组合为 SQL 片段来组装查询。 适用于动态构建复杂SQL。设置GongoDB 使用 PDO 扩展连接数据库。 include "gongo.php";$pdo = new PDO("mysql:host=localhost;dbname=dbname", "user", ...

    scope_guard:一种易于使用但难以滥用的现代C ++范围保护

    `scope_guard`是一种在C++编程中用于实现资源获取即初始化(RAII,Resource Acquisition Is Initialization)原则的机制,尤其适用于确保在特定作用域退出时执行清理操作。它源自C++11标准库中的`std::unique_ptr`、...

    textacular:Textacular公开了PostgreSQL全文搜索功能,并允许您声明全文索引。 Textacular将使用named_scope方法扩展ActiveRecord,使搜索变得轻松而有趣!

    文字的 有关更多文档,请访问 。 描述: Textacular公开了PostgreSQL全文搜索功能,扩展了ActiveRecord的作用域,使搜索变得轻松而有趣! 功能/问题: 仅适用于PostgreSQL 概要: 快速开始 Rails 3,Rails 4 ...

    张文钿 Rails Best Practices 幻灯片

    - **将查询移动到命名范围(named_scope)**:将复杂的查询逻辑从控制器移动到模型中,利用`named_scope`进行封装,提高代码的可读性和可维护性。 - **使用模型关联**:利用模型之间的关联关系来减少不必要的查询,...

    ruby on rails 2.1 what is new (CN)

    通过使用`named_scope`方法,可以创建可复用的查询片段,这些查询片段可以像方法一样被调用,极大地提高了代码的可读性和可维护性。例如: ```ruby class Post named_scope :published, lambda { {:conditions =&gt;...

    使用转换为 SQL 的简单查询语言 轻松搜索ActiveRecord 模型_ Ruby

    scoped_search gem可以很容易地搜索您的 ActiveRecord 模型。使用查询字符串执行搜索,该字符串应传递给 named_scope search_for。根据要查看的字段的定义,它将构建查询条件并将其作为命名范围返回

    Rails3的ActiveRecord 查询API.doc

    3. **`named_scope`**:这个在 Rails 2.x 中广泛使用的特性已被弃用,取而代之的是 `scope`,它可以接收 Proc 对象或 SQL 字符串,使得查询更加灵活。 4. **`with_scope` 和 `with_exclusive_scope`**:这两个方法也...

    Ruby on Rails: the scope method

    在ActiveRecord模块中,`scope`方法定义在`ActiveRecord::Scoping::Named::ClassMethods`模块中。其实现原理是动态生成一个类方法,该方法返回一个根据指定条件筛选的结果集。下面是一个简单的示例: ```ruby class...

    vote_fu_rails_3:投票和业力管理(现在有Rails 3支持)

    (现在兼容Banana和Rails 3!) 现在跳舞!混合蛋白该插件为您的食谱书引入了三种混合: actions_as_voteable :适用于帖子,评论等... 引入了一些较新的Rails功能,例如named_scope和:polymorphic关键字添加“ has_k

    TensorFLow 变量命名空间实例

    本文将深入探讨如何使用`name_scope`和`variable_scope`来创建和管理变量命名空间,并介绍如何实现变量的共享。 首先,让我们了解`name_scope`。`name_scope`的主要目的是提供图形结构的可视化清晰度,尤其是在...

    unrxlib_275_u_1_0_13

    1/ Update all packages in unit scope. 2/ Change namespace in RxViewer unit for XE2. _______________________________________________________________________________ Update 1.06 1/ repair malfunction ...

    delphixe10 RxLib_For_RX10插件

    1/ Update all packages in unit scope. 2/ Change namespace in RxViewer unit for XE2. _______________________________________________________________________________ Update 1.06 1/ repair malfunction ...

    RX Lib_For D5~XE2 XE3

    1/ Update all packages in unit scope. 2/ Change namespace in RxViewer unit for XE2. _______________________________________________________________________________ Update 1.06 1/ repair malfunction ...

    浅谈Tensorflow由于版本问题出现的几种错误及解决方法

    解决方法是,在定义模型时使用`with tf.variable_scope(tf.get_variable_scope()) as scope`,然后在这个作用域中定义变量和模型。 对于上述提到的Tensorflow版本更新导致的错误,最重要的是要及时查看Tensorflow的...

    ThinkPHP3.1新特性之命名范围的使用

    在ThinkPHP3.1版本中,引入了命名范围(Named Scope)这一新特性,它极大地简化了模型层的查询操作,允许开发者定义一系列的连贯操作方法,从而实现更加直观和易维护的代码。 **命名范围的基本概念** 命名范围指的...

    tensorflow Slim教程

    `arg_scope` - **功能**:提供一个新的作用域,用户可以在其中定义默认参数,用于特定的操作。 - **用途**:例如,可以为所有卷积层设置相同的权重正则化器。 ##### 2. `data` - **功能**:包含数据集定义、数据...

    深入理解vue中的slot与slot-scope

    2. **具名插槽(Named Slot)** 具名插槽则可以通过设置 `name` 属性来区分,允许在同一个组件中定义多个插槽。每个具名插槽都有一个唯一的名称,父组件可以根据需要将内容插入到对应的插槽。例如: ```html ...

    11g_plsql_user_guide_and_reference.pdf

    PL/Scope is a new tool that provides detailed information about the scope and usage of variables in PL/SQL programs. It helps developers understand how variables are used and where they are defined, ...

Global site tag (gtag.js) - Google Analytics