Class: InOrder::Add
- Inherits:
-
Object
- Object
- InOrder::Add
- Includes:
- InOrder::Aux::CreateElement, InOrder::Aux::VarKeys
- Defined in:
- app/models/in_order/add.rb
Overview
Adds a new element at the beginning or end of a list. Identified (i.e. keyed) by an Owner and/or Scope.
Instance Method Summary collapse
- #append(model) ⇒ Object (also: #push)
-
#call(model, at: :bottom) ⇒ Object
model
is an ActiveRecord model to be linked. - #insert(model, adjacency = nil, marker = nil) ⇒ Object
- #prepend(model) ⇒ Object (also: #shift)
Methods included from InOrder::Aux::VarKeys
Instance Method Details
#append(model) ⇒ Object Also known as: push
19 20 21 |
# File 'app/models/in_order/add.rb', line 19 def append(model) insert model, :after, last_element end |
#call(model, at: :bottom) ⇒ Object
model
is an ActiveRecord model to be linked
10 11 12 |
# File 'app/models/in_order/add.rb', line 10 def call(model, at: :bottom) bottom?(at) ? append(model) : prepend(model) end |
#insert(model, adjacency = nil, marker = nil) ⇒ Object
24 25 26 27 28 29 30 |
# File 'app/models/in_order/add.rb', line 24 def insert(model, adjacency=nil, marker=nil) marker = block_given? ? yield(iterator, model, adjacency, marker) : marker InOrder::Element.transaction do Insert.new(create_element(model, keys), marker, adjacency).call end end |
#prepend(model) ⇒ Object Also known as: shift
14 15 16 |
# File 'app/models/in_order/add.rb', line 14 def prepend(model) insert model, :before, first_element end |