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
#save ⇒ Object
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 |