我在Rails 2.3.10和3.0.3中完成了这项工作
def self.find(*args)
records = super
# Manipulate Records here.
end
我正在寻找Rails 3中的基本查找程序功能,我可以替换此功能以应用于Post.all,Post.first,Post.last等。
答案 0 :(得分:4)
我的建议......使用范围或类方法来代替:
e.g。
scope :my_scope, lambda {|...| ...}
然后申请
TheClass.my_scope.all
TheClass.my_scope.first
TheClass.my_scope.last
答案 1 :(得分:1)
all
,first
和last
都只是find
的包装,因此重新定义find
会影响所有这些。{1}}看看它们是如何在ActiveRecord::FinderMethods中实现的。
答案 2 :(得分:1)
我相信你正在寻找这个:
# File activerecord/lib/active_record/relation/finder_methods.rb, line 95
def find(*args)
return to_a.find { |*block_args| yield(*block_args) } if block_given?
options = args.extract_options!
if options.present?
apply_finder_options(options).find(*args)
else
case args.first
when :first, :last, :all
send(args.first)
else
find_with_ids(*args)
end
end
end
答案 3 :(得分:1)
这将完成原始问题的要求。
def self.find_by_sql(*args)
records = super
# Manipulate Records here
return records
end