Привет, я новичок в рельсах. Мне надоели активные ассоциации записей. Я изучал ассоциации из направляющих. Тем не менее я не могу найти ясный способ добавить ассоциации к моделям, предложенным на диаграмме.
У меня есть одно сомнение, может ли один внешний ключ (ВТОРАЯ МОДЕЛЬ) ссылаться на два первичных ключа (ВТОРОЙ МОДЕЛЬ УРОВЕНЬ 2 ПЕРВЫЙ И ВТОРОЙ МОДЕЛЬ УРОВЕНЬ ВТОРОЙ). Это было сделано, потому что пользователь должен выбрать, следует ли добавлять из SECOND MODEL LEVEL 2 FIRST TABLE или SECOND MODEL LEVEL 2 SECOND TABLE, вставляя значения в SECOND MODEL.
Если вы найдете это трудно понять, пожалуйста, оставьте комментарий, плохо вносите соответствующие изменения. И я был бы признателен за то, как запросить от FINAL LEVEL FIRST с BASE-MODEL доработать условие соединения.
Вы можете использовать полиморфную ассоциацию для ссылки на одну таблицу ИЛИ другую, проверьте модель ниже в соответствии с опубликованным изображением:
class BaseModel
has_many :first_models
has_many :second_models
end
class FirstModel
belgons_to :base_model
has_one :level_two_first_model
end
class LevelTwoFirstModel
belgons_to :first_model
end
class SecondModel
belgons_to :base_model
has_many :final_first_levels, as: :referenceable, :dependent => :destroy
has_many :final_second_levels, as: :referenceable, :dependent => :destroy
end
class LevelOneSecondModel
belongs_to :referenceable, polymorphic: true
has_many :final_first_levels
end
class LevelTwoSecondModel
belongs_to :referenceable, polymorphic: true
has_many :final_first_levels
end
class FinalFirstLevel
belongs_to :LevelOneSecondModel
end
class FinalSecondLevel
belongs_to :LevelTwoSecondModel
end
referenceable используется как клей между родительской таблицей и другими полиморфными ассоциациями (LevelOneSecondModel OR LevelTwoSecondModel)
NB:
Не забудьте добавить нижнюю строку в файлы миграции из 2-х дочерних таблиц, используемых в полиморфной ассоциации.
t.references :referenceable, polymorphic: true, index: true
Ссылка:
http://guides.rubyonrails.org/association_basics.html#polymorphic-associations