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. **易读性**:它可能提供...
`scope_guard`是一种在C++编程中用于实现资源获取即初始化(RAII,Resource Acquisition Is Initialization)原则的机制,尤其适用于确保在特定作用域退出时执行清理操作。它源自C++11标准库中的`std::unique_ptr`、...
【标题】"Named_Vas_expertadvisor_mt4_VAS_" 提供的信息表明,这是一个专为MetaTrader 4(MT4)平台设计的自动化交易顾问,名为"Named Vas",并且它与VAS(可能是Value at Stake的缩写)系统有关。在外汇交易中,...
除了在模型中定义`scope`之外,还可以使用`has_scope` gem来将查询条件映射到控制器的过滤器中。这使得可以根据HTTP请求参数自动应用查询条件,从而大大简化了控制器的代码。例如: ```ruby # 在模型中定义scope ...
标题“sem_named_lock.rar_between”暗示了我们正在讨论一个使用命名信号量(semaphore)来在不同进程间同步资源的实现。在这个场景中,信号量是作为一种锁机制,类似于互斥锁(mutex),但它的作用范围更广,可以...
编译安装Python3.7报错ModuleNotFoundError: No module named '_ctypes',所需安装包
标题中的"Named_tester EA_hedgeEA_expertadvisor_ea_mt4_strategy_"表明这是一个用于MetaTrader 4(MT4)交易平台的自动交易策略,也就是常说的Expert Advisor(EA)。"HedgeEA"提示我们这个EA可能采用了对冲交易...
在使用Python进行编程时,有时会遇到`ModuleNotFoundError: No module named '_bz2'`这样的错误,这通常意味着你的Python 3环境缺少了一个名为_bz2的模块。这个模块是Python 3内置的,用于处理BZip2压缩格式的数据。...
命名实体识别和分类(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`进行封装,提高代码的可读性和可维护性。 - **使用模型关联**:利用模型之间的关联关系来减少不必要的查询,...
在本文中,我们将深入探讨如何使用TCP(Transmission Control Protocol)函数来创建一个名为"Named Service_db8_tcp"的命名服务,以及如何通过该服务向客户端虚拟仪器(VI,Virtual Instrument)发送数据。...
scoped_search gem可以很容易地搜索您的 ActiveRecord 模型。使用查询字符串执行搜索,该字符串应传递给 named_scope search_for。根据要查看的字段的定义,它将构建查询条件并将其作为命名范围返回