diff --git a/app/models/guest_device.rb b/app/models/guest_device.rb index 717e1deaa11..5e95d0cce8e 100644 --- a/app/models/guest_device.rb +++ b/app/models/guest_device.rb @@ -9,12 +9,13 @@ class GuestDevice < ApplicationRecord belongs_to :switch # pNICs link to one switch belongs_to :lan # vNICs link to one lan + belongs_to :parent_device, :class_name => "GuestDevice" has_one :network, :foreign_key => "device_id", :dependent => :destroy, :inverse_of => :guest_device has_many :miq_scsi_targets, :dependent => :destroy has_many :firmwares, :dependent => :destroy - has_many :child_devices, -> { where(:parent_device_id => ids) }, :foreign_key => "parent_device_id", :class_name => "GuestDevice", :dependent => :destroy + has_many :child_devices, :foreign_key => "parent_device_id", :class_name => "GuestDevice", :dependent => :destroy, :inverse_of => :parent_device has_many :physical_network_ports, :dependent => :destroy has_many :connected_physical_switches, :through => :physical_network_ports diff --git a/spec/models/guest_device_spec.rb b/spec/models/guest_device_spec.rb index 43a46bf24f4..d6fa417f829 100644 --- a/spec/models/guest_device_spec.rb +++ b/spec/models/guest_device_spec.rb @@ -31,4 +31,15 @@ expect(template_gd.host).to be_nil expect(host_gd.host).to eq(host) end + + describe "#child_device" do + it "brings back children" do + parent = FactoryBot.create(:guest_device) + child1 = FactoryBot.create(:guest_device, :parent_device => parent) + child2 = FactoryBot.create(:guest_device, :parent_device => parent) + FactoryBot.create(:guest_device) # sad path (though the let! probably created lots of those) + + expect(parent.reload.child_devices).to match_array([child1, child2]) + end + end end