module NextRecord::ActiveRecordExtension
Public Class Methods
included(base)
click to toggle source
# File lib/extensions/active_record_extension.rb, line 3 def self.included(base) base.extend(ClassMethods) end
Public Instance Methods
next()
click to toggle source
# File lib/extensions/active_record_extension.rb, line 7 def next next_record end
previous()
click to toggle source
# File lib/extensions/active_record_extension.rb, line 11 def previous next_record(-1) end
Private Instance Methods
next_record(offset=1)
click to toggle source
# File lib/extensions/active_record_extension.rb, line 29 def next_record(offset=1) relation = self.class.next_record_ordered scope = self.class.next_record_options[:scope] if scope relation = relation.where(scope => send(scope)) end ids = relation.pluck(:id) index = ids.index(id) + offset return nil if index < 0 || index >= ids.size next_id = ids[index] relation.where(id: next_id).first end