Keep Finders on Their Own Model

本文介绍了一种使用Rails框架中name_scope方法对查找逻辑进行重构的方法,以提高代码的可读性和可维护性。通过示例展示了如何将复杂的查找条件转换为更简洁、清晰的查询方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文參考:http://rails-bestpractices.com/posts/13-keep-finders-on-their-own-model

不可改變你那壞習慣
class Post < ActiveRecord::Base
has_many :comments

def find_valid_comments
self.comment.find(:all, :conditions => {:is_spam => false},
:limit => 10)
end
end

class Comment < ActiveRecord::Base
belongs_to :post
end

class CommentsController < ApplicationController
def index
@comments = @post.find_valid_comments
end
end

用name_scope重構下-->
重構威武:
class Post < ActiveRecord::Base
has_many :comments
end

class Comment < ActiveRecord::Base
belongs_to :post

named_scope :only_valid, :conditions => { :is_spam => false }
named_scope :limit, lambda { |size| { :limit => size } }
end

class CommentsController < ApplicationController
def index
@comments = @post.comments.only_valid.limit(10)
end
end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值