With my functional tests (on PgSQL) I get strange errors like this 1) Error: test_create(AufgabeControllerTest): ActiveRecord::StatementInvalid: ERROR: duplicate key violates unique constraint "aufgaben_pkey" Tracking this down, I found that sequences are only reset for some of the tables I''m using. The reason? Inconsistent singularization. I won''t go so far as to say that plurals are bad, but their handling in Rails is blatant violation of the DRY principle. Fixtures has a method for resetting PostgreSQL sequences def self.reset_sequences(connection, table_names) table_names.flatten.each do |table| table_class = Inflector.classify(table.to_s) if Object.const_defined?(table_class) pk = eval("#{table_class}::primary_key") if pk == ''id'' connection.execute( "SELECT setval(''#{table.to_s}_id_seq'', (SELECT MAX(id) FROM #{table.to_s}), true)", ''Setting Sequence'' ) end end end end The smelly line in there is Inflector.classify(table.to_s) which simply auto-singularizes and camel cases the table name. A thing that might sort of work for english terms, it doesn''t work for other languages at all. In most places in Rails it is possible to work around auto-singularization/-pluralization, e.g. by set_table_name, explicitly defining :class_name and :foreign_key options. Not in this case. The problem is not with plurals per se or with Rails doing (trying) automatic translation between singular and plural forms. The problem is -- and that''s where DRY enters -- that it is handled inconsistently. If I tell ActiveRecord once that this class(_name) is related to that table_name, I want it to remember that and use the information in every context where mapping from one to the other is required. Obviously, that is not the case. I can''t remember how many places in the Rails codebase I''ve seen where class names and table names are converted into each other. Unfortunately, not with the help of two specific methods, which could rely on a mapping table, but by manipulating the syntactic arcana of the english language. What to do about this? The only solution I can imagine right now consists of these pieces - Funnel each and every conversion between singular and plural as well as class name and table name through centralized methods. - Add table-based conversion that gets priority over existing rule-based conversion. - Allow explicit registering of entries in this conversion table. In environment.rb, say. - When table_names are set on AR classes, remember this in the conversion table. Michael -- Michael Schuerig Life is just as deadly mailto:michael-q5aiKMLteq4b1SvskN2V4Q@public.gmane.org As it looks http://www.schuerig.de/michael/ --Richard Thompson, Sibella