1136: def reload
1137: synchronize do
1138: if self.class.primary_columns.empty?
1139: raise "Can not reload a record, which has no primary key."
1140: end
1141: unless self.saved?
1142: raise "Can not reload a record, which has not been saved yet."
1143: end
1144: reloaded_record = self.class.db_query1(
1145: 'SELECT * FROM ' << self.class.table <<
1146: 'WHERE ' << (self.class.primary_columns.collect { |column| '"' << column << '" = $' }.join(' AND ')),
1147: *(
1148: self.class.primary_columns.collect { |column| @old_primary_key[column] }
1149: )
1150: )
1151: if reloaded_record.nil?
1152: raise DatabaseError, "Could not reload data."
1153: end
1154: new_data_hash = {}
1155: self.class.columns.each { |column| new_data_hash[[column]] = reloaded_record.read(column) }
1156: @data_hash = new_data_hash
1157: return self
1158: end
1159: end