lib/sequenced/generator.rb in sequenced-2.0.0 vs lib/sequenced/generator.rb in sequenced-3.0.0

- old
+ new

@@ -9,11 +9,13 @@ @start_at = options[:start_at] || 1 @skip = options[:skip] end def set - record.send(:"#{column}=", next_id) unless id_set? || skip? + return if id_set? || skip? + lock_table + record.send(:"#{column}=", next_id) end def id_set? !record.send(column).nil? end @@ -42,10 +44,21 @@ end.count == 0 end private + def lock_table + if postgresql? + record.class.connection.execute("LOCK TABLE #{record.class.table_name} IN EXCLUSIVE MODE") + end + end + + def postgresql? + defined?(ActiveRecord::ConnectionAdapters::PostgreSQLAdapter) && + record.class.connection.instance_of?(ActiveRecord::ConnectionAdapters::PostgreSQLAdapter) + end + def base_relation record.class.base_class.unscoped end def find_last_record @@ -65,6 +78,6 @@ def max(*values) values.to_a.max end end -end \ No newline at end of file +end