Class: FlexiRecordDemo::Medium
- Inherits:
-
FlexiRecord::BaseRecord
- Object
- FlexiRecord::AbstractRecord
- FlexiRecord::BaseRecord
- FlexiRecordDemo::Medium
- Defined in:
- lib/flexirecord-demo.rb
Overview
A Medium (demo class).
CREATE TABLE “medium” (“number” int8 primary key, “lent_to_id” int8 references “person” (“id”) on delete restrict on update cascade );
Class Method Summary collapse
Instance Method Summary collapse
Methods inherited from FlexiRecord::BaseRecord
#[], #[]=, add_connected_references, add_many_to_one_reference, add_one_to_one_reference, add_read_option, autodetect_columns, columns, connection_pool, connection_pool=, db_execute, db_query, db_query1, #delete_from_cache, #destroy, #dup, #has_key?, #inspect, isolation_level, loader, lock, #method_missing, prepare_read_parameters, primary_columns, #read, read_option_value, reader, reader_attrs, #reload, #replace, #saved?, schema_name, schema_name!, schema_name=, select, select1, select_by_value_set, #set, set_loader, set_reader, set_setter, setter, sql, sql1, table, table_name, table_name!, table_name=, thread_connection_pool, thread_connection_pool=, #to_s, transaction, #transaction, transaction?, #update, use_connection, #used_columns
Dynamic Method Handling
This class handles dynamic methods through the method_missing method in the class FlexiRecord::BaseRecord
Class Method Details
.after_select(records) ⇒ Object
33 34 35 36 37 38 |
# File 'lib/flexirecord-demo.rb', line 33 def self.after_select(records) super records.preload(:entries).preload(:movie) records.preload(:lent_to) records.preload(:movies) end |
Instance Method Details
#available? ⇒ Boolean
55 56 57 |
# File 'lib/flexirecord-demo.rb', line 55 def available? lent_to.nil? end |
#save ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/flexirecord-demo.rb', line 39 def save if self.number == :auto self.class.transaction self, :read_committed do self.class.db_execute("LOCK TABLE #{self.class.table} IN SHARE ROW EXCLUSIVE MODE") last_medium = Medium.select1('ORDER BY "number" DESC LIMIT 1') self.number = if last_medium last_medium.number + 1 else 1 end return super end else return super end end |