4

Я довольно новый на рельсах 4, и я не совсем уверен, как должен быть мой join_table.Присоединиться к комментарию таблицы в rails 4 migration

Я сделал миграцию

rails g migration CreateJoinTableQuestionSubTopic question sub_topic 

И я получаю этот файл

class CreateJoinTableQuestionSubTopic < ActiveRecord::Migration 
    def change 
    create_join_table :questions, :sub_topics do |t| 
     # t.index [:question_id, :sub_topic_id] 
     # t.index [:sub_topic_id, :question_id] 
    end 
    end 
end 

Почему два показателя находятся в комментариях? Я думал, что раскол только один среди них, это правильный путь?

Неужели нет необходимости писать

t.column :question_id, :integer 
t.column :sub_topic_id, :integer 

/или

t.index :question_id 
t.index :sub_topic_id 

Я хотел бы иметь производительную присоединиться к таблице, но я не хочу, чтобы сделать это по-старому моды, если есть является новым по рельсам 4

Спасибо за вашу помощь

ответ

9

create_join_table команд в миграции нового в Rails 4. Это:

create_join_table :questions, :sub_topics do |t| 
    # other commands 
end 

, по существу, сокращенная для этого:

create_table :questions_sub_topics do |t| 
    t.integer :question_id, null: false 
    t.integer :sub_topic_id, null: false 
    # other commands 
end 

Вы можете добавить дополнительные столбцы в блоке; вы также можете добавить индексы, как это было предложено в комментариях в процессе миграции. Ваш выбор индексов зависит от того, как вы собираетесь использовать эти модели: Rails не выбирает для вас, потому что он не знает, что вы намерены. Если вы будете часто подтягивание sub_topics для данного вопроса (question.sub_topics), то вы хотите, чтобы ваш индекс, чтобы быть первым на question_id, то sub_topic_id:

create_join_table :questions, :sub_topics do |t| 
    t.index [:question_id, :sub_topic_id] 
end 

В этом случае вам не нужно, чтобы добавить index just on: question_id, так как индекс в двух столбцах также служит индексом в первом столбце.

+0

Спасибо за ваш ответ, я не нашел темы, которые говорят об этом изменении. – XavM

Смежные вопросы