Проблема с ассоциацией has_many: through => - PullRequest
0 голосов
/ 18 декабря 2011

Внимание: мне 4 недели на программировании. У меня проблемы с отношением has_many: through => между моими моделями Соседства и Cta_train.

Вот мои модели:

class CtaTrain < ActiveRecord::Base

  belongs_to :Ctaline
  has_and_belongs_to_many :searches
  has_many :neighborhoods, :through => :CtaLocation, :foreign_key => :neighborhood_id
  has_many :CtaLocations

end

class Neighborhood < ActiveRecord::Base
  has_many :geopoints
  has_many :listings
  has_many :properties
  has_and_belongs_to_many :searches
  has_many :CtaTrains, :through => :CtaLocation, :foreign_key => :cta_train_id
  has_many :CtaLocations
end

class CtaLocation < ActiveRecord::Base

  belongs_to :neighborhood
  belongs_to :CtaTrain

end

Когда я пытаюсь сделать это:

neighborhood.CtaTrains

Я получаю эту ошибку:

ActiveRecord :: HasManyThroughAssociationNotFoundError (Не удалось найти связь: CtaLocation в модели Neighborhood):

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

1 Ответ

2 голосов
/ 18 декабря 2011

Я думаю, проблема в том, что вы не следуете соглашениям Rails, используя строчные / подчеркивания для своих символов. Имена классов должны быть CamelCase, но везде вы должны делать следующее:

class CtaTrain < ActiveRecord::Base

  belongs_to :cta_line
  has_and_belongs_to_many :searches
  has_many :neighborhoods, :through => :cta_locations, :foreign_key => :neighborhood_id
  has_many :cta_locations

end

* Обновление: вы также должны использовать: cta_locations (множественное число) в вашем есть много через

...