2
class QuestionSet 
    has_and_belongs_to_many :questions, 
         class_name: 'Exam', 
         join_table: 'question_question_sets', 
         foreign_key: 'question_set_id', 
         association_foreign_key: 'question_id' 

end 

class Question 
    has_and_belongs_to_many :question_sets, 
         class_name: 'Exam', 
         join_table: 'question_question_sets', 
         foreign_key: 'question_id', 
         association_foreign_key: 'question_set_id' 

end 

Вышеуказанные модели унаследовали от базовой модели Exam (с использованием рельсов STI) и присоединиться к таблице содержит два поля: question_id и question_set_id. Теперь мне нужно преобразовать эту ассоциацию в has_many through.рельсов HABTM к имеет много через

Я попытался следующим образом:

class QuestionQuestionSet 
    has_many :questions 
    has_many :question_sets 
end 

class Question 
    has_many :question_question_sets, foreign_key: :question_id 
    has_many :question_sets, through: :question_question_sets 
end 

class QuestionSet 
    has_many :question_question_sets, foreign_key: :question_set_id 
    has_many :questions, through: :question_question_sets 
end 
+0

Пожалуйста, покажите, что вы пробовали самостоятельно, прежде чем просить кого-то сделать это за вас. –

+0

Я играл с именем класса и foreign_key. Но ничего не сработало для меня –

+0

обновил мой вопрос, пожалуйста, взгляните на него –

ответ

1

Даже после редактирования модели, необходимо создать новую присоединиться к таблице, так как предыдущий (созданный HABTM) не имеет и столбца «Идентификатор». В качестве справки вы можете следовать инструкциям, указанным в http://www.chrisrolle.com/en/blog/migration-path-from-habtm-to-has_many-through