Class: Arel::Nodes::Window
- Includes:
- Expression
- Defined in:
- lib/arel/nodes/window.rb
Direct Known Subclasses
Instance Attribute Summary collapse
-
#framing ⇒ Object
Returns the value of attribute framing.
-
#orders ⇒ Object
Returns the value of attribute orders.
Instance Method Summary collapse
- #frame(expr) ⇒ Object
-
#initialize ⇒ Window
constructor
A new instance of Window.
- #initialize_copy(other) ⇒ Object
- #order(*expr) ⇒ Object
- #range(expr = nil) ⇒ Object
- #rows(expr = nil) ⇒ Object
Methods included from OrderPredications
Methods inherited from Node
#and, #each, #not, #or, #to_sql
Methods included from FactoryMethods
#create_and, #create_false, #create_join, #create_on, #create_string_join, #create_table_alias, #create_true, #grouping, #lower
Constructor Details
#initialize ⇒ Window
Returns a new instance of Window.
7 8 9 |
# File 'lib/arel/nodes/window.rb', line 7 def initialize @orders = [] end |
Instance Attribute Details
#framing ⇒ Object
Returns the value of attribute framing.
5 6 7 |
# File 'lib/arel/nodes/window.rb', line 5 def framing @framing end |
#orders ⇒ Object
Returns the value of attribute orders.
5 6 7 |
# File 'lib/arel/nodes/window.rb', line 5 def orders @orders end |
Instance Method Details
#frame(expr) ⇒ Object
19 20 21 22 |
# File 'lib/arel/nodes/window.rb', line 19 def frame(expr) raise ArgumentError, "Window frame cannot be set more than once" if @frame @framing = expr end |
#initialize_copy(other) ⇒ Object
32 33 34 35 |
# File 'lib/arel/nodes/window.rb', line 32 def initialize_copy other super @orders = @orders.map { |x| x.clone } end |
#order(*expr) ⇒ Object
11 12 13 14 15 16 17 |
# File 'lib/arel/nodes/window.rb', line 11 def order *expr # FIXME: We SHOULD NOT be converting these to SqlLiteral automatically @orders.concat expr.map { |x| String === x || Symbol === x ? Nodes::SqlLiteral.new(x.to_s) : x } self end |