Попробуйте
class Toy < ApplicationRecord
belongs_to :pet
delegate :house, to: :pet
end
И удалите
delegate :house, to: :toys
из Pet
.
Есть как минимум две проблемы с:
class Pet < ApplicationRecord
belongs_to :house
has_many :toys
delegate :house, to: :toys
end
Во-первых, экземпляр Toy
не отвечает на house
, поэтому вы не можете delegate :house, to: :toys
.Во-вторых, даже если экземпляр Toy
действительно ответил на house
, вы не сможете вызвать этот метод экземпляра в коллекции, каковым является toys
.Итак, это разорилось повсюду.
Pet
, однако отвечает на house
.И, Toy belongs_to :pet
.Итак, вы делаете Toy delegate :house, to: :pet
.А Боб твой дядя!