From ac03bc91dbee36233e061eb624f7781a49ab6fcf Mon Sep 17 00:00:00 2001 From: Emilio Tagua Date: Tue, 18 Aug 2009 08:27:37 -0300 Subject: Use explicit method definition instead of metaprogramming. --- activerecord/lib/active_record/relation.rb | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) (limited to 'activerecord/lib/active_record') diff --git a/activerecord/lib/active_record/relation.rb b/activerecord/lib/active_record/relation.rb index 0d43c53d10..9c7ba881fc 100644 --- a/activerecord/lib/active_record/relation.rb +++ b/activerecord/lib/active_record/relation.rb @@ -1,7 +1,6 @@ module ActiveRecord class Relation - delegate :delete, :to_sql, :to => :relation - CLAUSES_METHODS = ["group", "order", "on"].freeze + delegate :to_sql, :to => :relation attr_reader :relation, :klass def initialize(klass, table = nil) @@ -22,20 +21,26 @@ module ActiveRecord to_a.first end - for clause in CLAUSES_METHODS - class_eval %{ - def #{clause}!(_#{clause}) - @relation = @relation.#{clause}(_#{clause}) if _#{clause} - self - end - } - end - def select!(selection) @relation = @relation.project(selection) if selection self end + def on!(on) + @relation = @relation.on(on) if on + self + end + + def order!(order) + @relation = @relation.order(order) if order + self + end + + def group!(group) + @relation = @relation.group(group) if group + self + end + def limit!(limit) @relation = @relation.take(limit) if limit self -- cgit v1.2.3