1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Switch Arel::Relation to a module. This will allow for classes with Relation extended on them to represent relations themselves (as opposed to their instances being relations).

This commit is contained in:
Carl Lerche 2010-03-22 16:26:00 -07:00
parent d0b47c64e2
commit 30fb25d3ab
14 changed files with 25 additions and 17 deletions

View file

@ -1,5 +1,7 @@
module Arel
class Join < Relation
class Join
include Relation
attributes :relation1, :relation2, :predicates
deriving :==
delegate :name, :to => :relation1
@ -60,7 +62,7 @@ module Arel
end
end
class Relation
module Relation
def join?
false
end

View file

@ -1,5 +1,5 @@
module Arel
class Relation
module Relation
attr_reader :count
def session

View file

@ -1,5 +1,7 @@
module Arel
class Compound < Relation
class Compound
include Relation
attr_reader :relation
delegate :joins, :join?, :inserts, :taken, :skipped, :name, :externalizable?,
:column_for, :engine, :sources, :locked, :table_alias,

View file

@ -12,7 +12,7 @@ module Arel
end
end
class Relation
module Relation
def externalize
@externalized ||= externalizable?? Externalization.new(self) : self
end

View file

@ -1,7 +1,7 @@
require 'singleton'
module Arel
class Nil < Relation
include Singleton
class Nil
include Relation, Singleton
end
end

View file

@ -1,5 +1,7 @@
module Arel
class Array < Relation
class Array
include Relation
attributes :array, :attribute_names_and_types
include Recursion::BaseCase
deriving :==, :initialize

View file

@ -1,5 +1,5 @@
module Arel
class Compound < Relation
class Compound
delegate :array, :to => :relation
def unoperated_rows

View file

@ -50,7 +50,7 @@ module Arel
end
end
class Join < Relation
class Join
def eval
result = []
relation1.call.each do |row1|

View file

@ -1,5 +1,5 @@
module Arel
class Join < Relation
class Join
def table_sql(formatter = Sql::TableReference.new(self))
relation1.externalize.table_sql(formatter)
end

View file

@ -1,5 +1,5 @@
module Arel
class Relation
module Relation
@@connection_tables_primary_keys = {}
def compiler

View file

@ -1,6 +1,6 @@
module Arel
class Table < Relation
include Recursion::BaseCase
class Table
include Relation, Recursion::BaseCase
cattr_accessor :engine, :tables
attr_reader :name, :engine, :table_alias, :options

View file

@ -1,5 +1,5 @@
module Arel
class Compound < Relation
class Compound
delegate :table, :table_sql, :to => :relation
def build_query(*parts)

View file

@ -1,5 +1,5 @@
module Arel
class Nil < Relation
class Nil
def table_sql(formatter = nil); '' end
def name; '' end
end

View file

@ -22,7 +22,9 @@ module Arel
end
end
class Model < Relation
class Model
include Relation
attr_reader :engine, :attributes
def self.build