rails的动态的finder已经很诱人的语法糖了,find_by_name,find_by_name_and_sex优雅而直观,虽然使用method missing机制会造成一定的性能损失,但这个点损失基本可以忽略不计,rails作为ruby在web方面的DSL的确很棒,rails 2.1提供了named_scope,这个可以让你的模型更加优美:
class Feed < ActiveRecord::Base
named_scope :active, :conditions => "(active = 1)"
named_scope :stale, :conditions => ["last_updated > ?", 30.minutes.ago.to_s(:db)]
end
使用:
Feed.active #返回active的feed
还可以链式调用:
Feed.active.stale #返回需要更新的feed
还可以支持lambda表达式
class Product < ActiveRecord::Base
belongs_to :category
named_scope :cheap, :conditions => { :price => 0..5 }
named_scope :recent, lambda { |*args| {:conditions => ["released_at > ?", (args.first || 2.weeks.ago)]} }
named_scope :visible, :include => :category, :conditions => { 'categories.hidden' => false }
end
使用:
Product.recent.cheap
分享到:
相关推荐
贡戈数据库GongoDB 是一个适用于 PHP 5 的 SQL 友好 ORM,具有...定义数据映射器Named_scope 在数据映射器类中定义。 class Mapper_Book extends Gongo_Db_Mapper{ protected $table = "books"; protected $namedScopes
问题ImportError: No module named _curses解决资源 问题解决地址 http://blog.csdn.net/qq_19299071/article/details/56013485
放到lib/python2.7/lib-dynload/下解决Python2的No module named _sqlite3问题
在Python 3.4及以后的版本中,内置的 `enum` 模块已经提供了对枚举的支持,但 `named_enum` 库可能是为了提供更便捷或者更定制化的枚举使用体验。 `named_enum` 库的主要功能可能包括: 1. **易读性**:它可能提供...
【标题】"Named_Vas_expertadvisor_mt4_VAS_" 提供的信息表明,这是一个专为MetaTrader 4(MT4)平台设计的自动化交易顾问,名为"Named Vas",并且它与VAS(可能是Value at Stake的缩写)系统有关。在外汇交易中,...
`scope_guard`是一种在C++编程中用于实现资源获取即初始化(RAII,Resource Acquisition Is Initialization)原则的机制,尤其适用于确保在特定作用域退出时执行清理操作。它源自C++11标准库中的`std::unique_ptr`、...
除了在模型中定义`scope`之外,还可以使用`has_scope` gem来将查询条件映射到控制器的过滤器中。这使得可以根据HTTP请求参数自动应用查询条件,从而大大简化了控制器的代码。例如: ```ruby # 在模型中定义scope ...
标题“sem_named_lock.rar_between”暗示了我们正在讨论一个使用命名信号量(semaphore)来在不同进程间同步资源的实现。在这个场景中,信号量是作为一种锁机制,类似于互斥锁(mutex),但它的作用范围更广,可以...
在使用Python进行编程时,有时会遇到`ModuleNotFoundError: No module named '_bz2'`这样的错误,这通常意味着你的Python 3环境缺少了一个名为_bz2的模块。这个模块是Python 3内置的,用于处理BZip2压缩格式的数据。...
编译安装Python3.7报错ModuleNotFoundError: No module named '_ctypes',所需安装包
在探索嵌入式系统开发的世界中,stm32单片机无疑是其中一颗璀璨的明星。作为一种广泛应用于工业控制、智能设备、医疗电子等领域的高性能微控制器,stm32凭借其强大的处理能力、丰富的外设资源以及灵活的功耗管理赢得...
标题中的"Named_tester EA_hedgeEA_expertadvisor_ea_mt4_strategy_"表明这是一个用于MetaTrader 4(MT4)交易平台的自动交易策略,也就是常说的Expert Advisor(EA)。"HedgeEA"提示我们这个EA可能采用了对冲交易...
在本段内容中,我们将深入探讨与标题为“named_file_1741140251.zip”的压缩包文件相关的核心知识点。首先需要明确的是,该压缩包文件与“stm32 嵌入式 单片机”紧密相关,这是一个非常关键的信息点。在展开讨论之前...
在探讨stm32嵌入式单片机开发的相关资料时,压缩包named_file_1741139378.zip提供了一个关键的文件列表,指向了对开发者来说非常有价值的信息。首先,名为"简介.txt"的文件可能包含整个项目或压缩包内容的概述,这有...
命名实体识别和分类(Named Entity Recognition and Classification,简称NERC)是自然语言处理(Natural Language Processing,简称NLP)中的一个基础任务,主要针对文本中的命名实体进行识别和分类,如人名、组织名、...
文字的 有关更多文档,请访问 。 描述: Textacular公开了PostgreSQL全文...您的模型现在可以使用搜索方法: #basic_search方法是您可能期望的:从字面上看您要发送给它的内容,而对输入没有任何幻想: Game . basi
在您的spec_helper.rb或* _spec.rb中添加require 'named_let' 。 describe 'named_let' do context 'symbol only' do named_let(:foo) { Object.new } it { foo.to_s should == "foo" } it { foo.inspect....
python3.7 pandas执行失败,报"no module named '_bz2'"的错误。将资源下载下来,然后放到python3.7相应的目录python3/lib/python3.7/lib-dynload下。再给资源可执行权限:chmod 755 _bz2.cpython-37m-x86_64-linux-...
在Python编程过程中,有时会遇到导入模块时遇到错误,例如"ImportError: No module named _ssl"。这个错误通常表示Python无法找到SSL模块,该模块是Python标准库的一部分,用于处理安全套接层(SSL)和传输层安全...
- **将查询移动到命名范围(named_scope)**:将复杂的查询逻辑从控制器移动到模型中,利用`named_scope`进行封装,提高代码的可读性和可维护性。 - **使用模型关联**:利用模型之间的关联关系来减少不必要的查询,...