Когда я хочу создать присоединиться стол, что я читал из rubyguides, что я могу установить индекс непосредственно следующим образом:Создание Join-таблицы с индексами в Rails
create_join_table :products, :suppliers do |t|
t.index [:product_id, :supplier_id]
t.index [:supplier_id, :product_id]
end
Но при поиске больше на эту тему Я прочитал я должен добавить индекс после того, как таблица создана:
add_index(:products_suppliers, [:product_id, :supplier_id], :unique => true)
ли Rails (4) понимать первый подход, или лучше, чтобы добавить индекс после моей таблицы создается?
Могут ли мои два примера указать один и тот же индекс или они два разных?
Попробуйте один из способов: 'rake db: migrate', проверьте' schema.rb', затем 'rake db: rollback' и попробуйте другой способ. Кроме того, первый раздел кода, который вы опубликовали, не соответствует коду в указанной вами ссылке. – Jason
Во втором примере вы добавляете ограничение уникальности. Я не думаю, что вы можете добавить ограничение уникальности внутри блока в первом примере (странный Rails quirk). Итак: если вы хотите индекс и уникальность, вы должны сделать это вторым способом. – dwenzel
Хорошо, спасибо большое! Это то, о чем мне было интересно :) – MMachinegun