Class Index [+]

Quicksearch

Sequel::Plugins::List::InstanceMethods

Public Instance Methods

at_position(p) click to toggle source

The model object at the given position in the list containing this instance.

    # File lib/sequel/plugins/list.rb, line 91
91:         def at_position(p)
92:           list_dataset.first(position_field => p)
93:         end
before_create() click to toggle source

Set the value of the position_field to the maximum value plus 1 unless the position field already has a value.

     # File lib/sequel/plugins/list.rb, line 97
 97:         def before_create
 98:           unless send(position_field)
 99:             send("#{position_field}=", list_dataset.max(position_field).to_i+1)
100:           end
101:         end
last_position() click to toggle source

Find the last position in the list containing this instance.

     # File lib/sequel/plugins/list.rb, line 104
104:         def last_position
105:           list_dataset.max(position_field).to_i
106:         end
list_dataset() click to toggle source

A dataset that represents the list containing this instance.

     # File lib/sequel/plugins/list.rb, line 109
109:         def list_dataset
110:           model.scope_proc ? model.scope_proc.call(self) : model.dataset
111:         end
move_down(n = 1) click to toggle source

Move this instance down the given number of places in the list, or 1 place if no argument is specified.

     # File lib/sequel/plugins/list.rb, line 115
115:         def move_down(n = 1)
116:           move_to(position_value + n)
117:         end
move_to(target, lp = nil) click to toggle source

Move this instance to the given place in the list. Raises an exception if target is less than 1 or greater than the last position in the list.

     # File lib/sequel/plugins/list.rb, line 121
121:         def move_to(target, lp = nil)
122:           current = position_value
123:           if target != current
124:             checked_transaction do
125:               ds = list_dataset
126:               op, ds = if target < current
127:                 raise(Sequel::Error, "Moving too far up (target = #{target})") if target < 1
128:                 [:+, ds.filter(position_field=>target...current)]
129:               else
130:                 lp ||= last_position
131:                 raise(Sequel::Error, "Moving too far down (target = #{target}, last_position = #{lp})") if target > lp
132:                 [:-, ds.filter(position_field=>(current + 1)..target)]
133:               end
134:               ds.update(position_field => Sequel::SQL::NumericExpression.new(op, position_field, 1))
135:               update(position_field => target)
136:             end
137:           end
138:           self
139:         end
move_to_bottom() click to toggle source

Move this instance to the bottom (last position) of the list.

     # File lib/sequel/plugins/list.rb, line 142
142:         def move_to_bottom
143:           lp = last_position 
144:           move_to(lp, lp)
145:         end
move_to_top() click to toggle source

Move this instance to the top (first position, position 1) of the list.

     # File lib/sequel/plugins/list.rb, line 148
148:         def move_to_top
149:           move_to(1)
150:         end
move_up(n = 1) click to toggle source

Move this instance the given number of places up in the list, or 1 place if no argument is specified.

     # File lib/sequel/plugins/list.rb, line 154
154:         def move_up(n = 1)
155:           move_to(position_value - n) 
156:         end
next(n = 1) click to toggle source

The model instance the given number of places below this model instance in the list, or 1 place below if no argument is given.

     # File lib/sequel/plugins/list.rb, line 160
160:         def next(n = 1)
161:           n == 0 ? self : at_position(position_value + n)
162:         end
position_value() click to toggle source

The value of the model’s position field for this instance.

     # File lib/sequel/plugins/list.rb, line 165
165:         def position_value
166:           send(position_field)
167:         end
prev(n = 1) click to toggle source

The model instance the given number of places below this model instance in the list, or 1 place below if no argument is given.

     # File lib/sequel/plugins/list.rb, line 171
171:         def prev(n = 1)
172:           self.next(n * 1)
173:         end

Private Instance Methods

position_field() click to toggle source

The model’s position field, an instance method for ease of use.

     # File lib/sequel/plugins/list.rb, line 178
178:         def position_field
179:           model.position_field
180:         end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.