ruby-on-rails – 当你可以使用常规的Ruby类方法时,为什么要使用
发布时间:2020-12-17 02:09:02 所属栏目:百科 来源:网络整理
导读:领域 class Comment ActiveRecord::Base scope :most_recent,- (limit) { order("created_at desc").limit(limit) }end 使用范围 @recent_comments = Comment.most_recent(5) 分类方法 在模型中 def self.most_recent(limit) order("created_at desc").limit
领域
class Comment < ActiveRecord::Base scope :most_recent,-> (limit) { order("created_at desc").limit(limit) } end 使用范围 @recent_comments = Comment.most_recent(5) 分类方法 在模型中 def self.most_recent(limit) order("created_at desc").limit(limit) end 在控制器中 @recent_comments = Comment.most_recent(5) 当你可以使用常规的Ruby类方法时,为什么要使用作用域? 解决方法
我认为使用范围的最大原因是因为它总是会返回一个ActiveRecord :: Relation,即使范围的计算结果为nil,也不像class方法.除非调用范围,否则还可以向范围中添加特定方法,这些方法不会出现在类中.
scope :lovely,-> name { where(name: name) if name.present? } 如果没有名字,这将返回集合.但是在类方法中,你必须做这样的事情 def self.lovely(name) if name.present? where(name: name) else all end end 您可以在此处找到更多范围文档:Active Record scopes vs class methods和此处:Should You Use Scopes or Class Methods?和ActiveRecord::Scoping::Named::ClassMethods (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |