我最近开始实习了。我的雇主在 Rails 上使用 ruby,我经常遇到需要查找才能理解的新语法。我在谷歌上搜索了named_scope的一个很好的解释,但到目前为止我发现的大部分是对它给予高度赞扬的博客文章,而不是直接的定义或介绍。
ruby on Rails 中的named_scope(现在简称为scope)到底是什么?
范围是集合的子集。听起来很复杂?事实并非如此。想象一下:
您有用户。现在,其中一些用户已订阅您的时事通讯。您通过向用户数据库添加字段 (user.subscribed_to_newsletter = true) 来标记接收新闻通讯的用户。当然,您有时希望吸引那些订阅您的时事通讯的用户。
当然,你总是可以这样做:
User.where(subscribed_to_newsletter: true).each do #something
然而,您可以做这样的事情,而不是总是写这个。
#File: users.rb
class User < ActiveRecord::Base
scope :newsletter, where(subscribed_to_newsletter: true)
#yada yada
end
如果您正在使用Rails 4 或更新版本,改为这样做:
#File: users.rb
class User < ActiveRecord::Base
scope :newsletter, -> { where(subscribed_to_newsletter: true) }
#yada yada
end
这允许您通过简单地执行以下操作来访问您的订阅者:
User.newsletter.each do #something
这是一个非常简单的示例,但总的来说,它可以成为非常强大的工具来简化您的工作。
查看此链接:接口说明 http://api.rubyonrails.org/classes/ActiveRecord/Scoping/Named/ClassMethods.html#method-i-scope
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)