Module: FlexiRecord::ListRecord

Included in:
FlexiRecordDemo::MediumEntry
Defined in:
lib/flexirecord.rb

Overview

MixIn for BaseRecord’s (or objects of sub-classes) which are sorted by a ‘position’ field.

Instance Method Summary collapse

Instance Method Details

#saveObject



1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
# File 'lib/flexirecord.rb', line 1550

def save
  transaction(:read_committed) do
    self.class.lock(:share_row_exclusive)
    db_result = nil
    if self.position == :first
      db_result = self.class.db_query1(
        'SELECT "position" - 1 AS "result" ' <<
        'FROM ' << self.class.table << ' WHERE "position" NOTNULL ORDER BY "position" ASC)')
      self.position = db_result ? db_result.result : 0
    elsif self.position == :last
      db_result = self.class.db_query1(
        'SELECT "position" + 1 AS "result" ' <<
        'FROM ' << self.class.table << ' WHERE "position" NOTNULL ORDER BY "position" DESC')
      self.position = db_result ? db_result.result : 0
    end
    return super
  end
end