Похоже, вы пытаетесь использовать однотабличное наследование (например, все данные хранятся в одной таблице, называемой equipment
)?
, если это так, вы можете посмотреть здесь .
по существу, вы определяете equipment
с полем типа:
rails g model Equipment brand ip type
Это создаст файл модели оборудования (и файл миграции БД для полей)
# app/models/equipment.rb
class Equipment < ApplicationRecord
end
Затем вы можете создать несколько дополнительных файлов моделей, которые наследуют оборудование:
# app/models/printer.rb
class Printer < Equipment
end
Когда вы создаете принтер, он автоматически устанавливает тип = Printer
> Printer.create(brand: 'HP', ip: '10.0.0.1')
> equip = Equipment.find_by_ip('10.0.0.1')
> equip.type
=> "Printer"
> equip.is_a?(Printer)
=> true
> equip.is_a?(Equipment)
=> true
Реализация этого в контроллерах и маршрутах зависит от того, что вы хотите, чтобы наше приложение делало.может быть, начать с работы STI, а затем выяснить, как вы хотите взаимодействовать с этими классами.