Это должен быть очень простой вопрос, я все еще новичок в ruby, поэтому буду признателен за помощь.
Итак, у меня есть 3 таблицы в моей базе данных: Source, SourceType и Feed. Каждый источник принадлежит к SourceType, а каждый канал принадлежит источнику. Их первичными ключами являются SourceID, TypeID и FeedID
Мои классы активной записи:
class SourceFeed < ActiveRecord::Base
self.table_name = "SourceFeed"
self.primary_key = "FeedID"
belongs_to :Source,
:foreign_key => "SourceID",
:class_name => "Source",
:include => "SourceType"
end
class Source < ActiveRecord::Base
self.table_name = "Source"
self.primary_key = "SourceID"
has_many :SourceFeeds,
:primary_key => "SourceID",
:class_name => "SourceFeed"
belongs_to :SourceType,
:foreign_key => "TypeID",
:class_name => "SourceType"
end
class SourceType < ActiveRecord::Base
self.table_name = "SourceType"
self.primary_key = "TypeID"
has_many :Source,
:primary_key => "TypeID",
:class_name => "Source"
end
Я пытаюсь выбрать материал из SourceFeed, Stuff из Source и SourceType. Вот запрос:
feed = SourceFeed.select("SourceFeed.FeedID, Source.Name as SourceName, SourceType.Name as SourceType").joins(:Source, :SourceType).where(:FeedID => FeedID).first
Я получаю Association named 'SourceType' was not found; perhaps you misspelled it?
Ошибка
Если я удаляю его из Joins, я получаю ошибку Unknown column 'SourceType.Name' in 'field list'
.
Какой правильный способ сделать это?
Спасибо
PS: Моя база данных не соответствует соглашениям об именах активных записей, но я не могу изменить то, что я работаю с существующей БД.