0

У меня возникли проблемы с правильной настройкой этой ассоциации.Как настроить полиморфный has_many: через?

У меня есть 3 модели: музыканты, группы и менеджеры. Каждый из них может иметь определенный «уровень», связанный с ними (стресс, счастье и т. Д.).

Но я не знаю, как правильно связаны мои уровни с другим 3.

Там должны быть посредником моделью, которая соединяет уровни с различными элементами и устанавливает, что текущий уровень находится.

Нужен ли мне какой-то has_many: через это полиморфно? И как я это делаю? Нужен ли мне какой-то другой тип связи?

enter image description here

Я задал подобный вопрос раньше, но сделал тщательно ужасную работу, объясняя, что я пытался сделать, так это моя вторая попытка.

ответ

1

ItemLevels нужен тип, чтобы знать, что это связано с:

class ItemLevel < ActiveRecord::Base 
    # levelable_id :integer 
    # levelable_type :string(255) 
    belongs_to :levelable, :polymorphic => true 
    has_many :levels 
end 

class Musician < ActiveRecord::Base 
    has_many :levelables 
end 

class Musician < ActiveRecord::Base 
    has_many :levelables 
end 

class Manager < ActiveRecord::Base 
    has_many :levelables 
end 

Level то только должен знать, что ItemLevel это связано с:

class Level < ActiveRecord::Base 
    belongs_to :item_level 
end 

Если вы хотите быть строгим , вы должны поместить некоторую проверку в свою модель уровня, чтобы проверить, что у нее есть ItemLevel и тип, который создается.

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