Я смотрел скринкаст, где автор сказал, что иметь первичный ключ в таблице соединений - нехорошо, но не объяснил почему.
В объединенной таблице в этом примере было два столбца, определенных при миграции Rails, и автор добавил индекс к каждому из столбцов, но без первичного ключа.
Почему в этом примере нехорошо иметь первичный ключ?
create_table :categories_posts, :id => false do |t|
t.column :category_id, :integer, :null => false
t.column :post_id, :integer, :null => false
end
add_index :categories_posts, :category_id
add_index :categories_posts, :post_id
РЕДАКТИРОВАТЬ: Как я уже говорил Клетусу, я могу понять потенциальную полезность поля автоматического номера в качестве первичного ключа даже для таблицы соединений. Однако в приведенном выше примере автор явно избегает создания поля автоматического нумерации с синтаксисом «: id => false» в операторе «create table». Обычно Rails автоматически добавляет поле идентификатора с автонумерацией в таблицу, созданную при такой миграции, и это становится первичным ключом. Но для этой соединительной таблицы автор специально помешал. Я не был уверен, почему он решил последовать этому подходу.