Monday, June 16, 2008

Why ActiveRecord::HasManyThroughAssociationNotFoundError: Could not find the association arrise?

Tworząc zależności wiele do wiele możemy wykorzystać przełącznik through i zapisać w danej asocjacji dodatkowe informacje np. relacja Czytelnik - Artykul, może zawierać np. ocenę wystawioną danemu artykułowi. Nie wchodząc w szczegóły jak tworzyć takie związki (na sieci znajduje się kilka dość dobrych tutoriali które łątwo wygooglować), czasami napotkać na poniższy wyjątek:


ActiveRecord::HasManyThroughAssociationNotFoundError: Could not find the association


Aby rozwiązać ten problem należy pamiętać, że klasa będąca złączeniem musi być jawnie dodana do zależności w klasach bazowych. Na przykładzie:


class Lekarz < ActiveRecord::Base
has_many :placowki, :through => :pracownicy
has_many :pracownicy
end

class Placowka < ActiveRecord::Base
has_many :lekarze, :through => :pracownicy
has_many :pracownicy
end

class Pracownik < ActiveRecord::Base
belongs_to :lekarz
belongs_to :placowka
end

No comments: