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:
parent
d0b47c64e2
commit
30fb25d3ab
14 changed files with 25 additions and 17 deletions
|
@ -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
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
module Arel
|
||||
class Relation
|
||||
module Relation
|
||||
attr_reader :count
|
||||
|
||||
def session
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -12,7 +12,7 @@ module Arel
|
|||
end
|
||||
end
|
||||
|
||||
class Relation
|
||||
module Relation
|
||||
def externalize
|
||||
@externalized ||= externalizable?? Externalization.new(self) : self
|
||||
end
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
require 'singleton'
|
||||
|
||||
module Arel
|
||||
class Nil < Relation
|
||||
include Singleton
|
||||
class Nil
|
||||
include Relation, Singleton
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
module Arel
|
||||
class Array < Relation
|
||||
class Array
|
||||
include Relation
|
||||
|
||||
attributes :array, :attribute_names_and_types
|
||||
include Recursion::BaseCase
|
||||
deriving :==, :initialize
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
module Arel
|
||||
class Compound < Relation
|
||||
class Compound
|
||||
delegate :array, :to => :relation
|
||||
|
||||
def unoperated_rows
|
||||
|
|
|
@ -50,7 +50,7 @@ module Arel
|
|||
end
|
||||
end
|
||||
|
||||
class Join < Relation
|
||||
class Join
|
||||
def eval
|
||||
result = []
|
||||
relation1.call.each do |row1|
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
module Arel
|
||||
class Relation
|
||||
module Relation
|
||||
@@connection_tables_primary_keys = {}
|
||||
|
||||
def compiler
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
module Arel
|
||||
class Compound < Relation
|
||||
class Compound
|
||||
delegate :table, :table_sql, :to => :relation
|
||||
|
||||
def build_query(*parts)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
module Arel
|
||||
class Nil < Relation
|
||||
class Nil
|
||||
def table_sql(formatter = nil); '' end
|
||||
def name; '' end
|
||||
end
|
||||
|
|
|
@ -22,7 +22,9 @@ module Arel
|
|||
end
|
||||
end
|
||||
|
||||
class Model < Relation
|
||||
class Model
|
||||
include Relation
|
||||
|
||||
attr_reader :engine, :attributes
|
||||
|
||||
def self.build
|
||||
|
|
Loading…
Reference in a new issue