Недавно я переключился с использования целочисленных идентификаторов последовательности на UUID для первичных ключей в моем приложении Rails 3 с использованием Postgresql, используя метод, аналогичный этот метод .Таким образом, ни в одной из моих таблиц нет последовательностей, но Rails все еще делает (что я считаю) ненужные вызовы для выбора последовательностей при создании записей.Например:
PK and serial sequence (1.3ms) SELECT attr.attname, seq.relname
FROM pg_class seq,
pg_attribute attr,
pg_depend dep,
pg_namespace name,
pg_constraint cons
WHERE seq.oid = dep.objid
AND seq.relkind = 'S'
AND attr.attrelid = dep.refobjid
AND attr.attnum = dep.refobjsubid
AND attr.attrelid = cons.conrelid
AND attr.attnum = cons.conkey[1]
AND cons.contype = 'p'
AND dep.refobjid = '"posts"'::regclass
Я полагаю, что это генерируется функцией pk_and_sequence_for, соответствующая часть моей схемы:
t.uuid "id", :null => false, :primary => true
Тип uuid - это всего 32 символа.
Может ли кто-нибудь просветить меня элегантным способом помешать Rails сделать этот запрос?(Или объясните, зачем это нужно).Спасибо.