0

Как сохранить и просмотреть отношения has_many с двумя разными моделями, которые наследуют STI?Использование has_many с множественными типами моделей через STI

У меня есть базовая модель для проектов следующим образом:

class Project < ActiveRecord::Base 
    attr_accessible :slug, 
        :category_id, 
        :description, 
        :name, 
        :visible, 
        :note, 
        :contractor, :contractor_url, 
        :date_complete, :architect, :architect_url, 
        :building_year, 
        :project_type, 
        :address, :city, :state, :country, 
        :pictures, 
        :photo_credit 

    has_many :pictures, :order=>:id, :dependent => :destroy 

Picture.rb:

class Picture < ActiveRecord::Base 
    attr_accessible :project_id, :image, :caption, :cover, :dimensions 

    belongs_to :project 

И используя STI У меня есть домашняя страница Продукты, которые отображают подмножество проектов и специфические на домашнюю страницу:

class HomepageItem < Project 
    attr_accessible :slug, 
        :name, 
        :visible, 
        :note, 
        :pictures, 
        :photo_credit 

    has_many :pictures, :order=>:id, :dependent => :destroy 

Это приводит к ошибке, ожидающей появления нового столбца на фотографияхвместо project_id

PG::UndefinedColumn: ERROR: column pictures.homepage_item_id does not exist
I believe this should be looking on the pictures.project_id column.

Примечание: Без has_many, определенной в HomepageItem, элементы сохраняются, но никакие картинки не будут созданы. Также это проект Rails 3.2.22.

ответ

1

, как вы видите, что ищет внешний ключ, так включать внешний ключ в ассоциации, как показано ниже,

class HomepageItem < Project 
    attr_accessible :slug, 
        :name, 
        :visible, 
        :note, 
        :pictures, 
        :photo_credit 

    has_many :pictures, :foreign_key =>:project_id, :order=>:id, :dependent => :destroy 
+0

Спасибо, я все еще получаю висит наследование Rails, и я не мог найти правильный набор ключевых слов для ответа. Где я могу спросить, вы нашли документы для этого? – Nilloc

+1

Привет, Rails официальные документы были действительно хорошими http://guides.rubyonrails.org/association_basics.html и http://apidock.com/rails/ActiveRecord/Associations/AssociationCollection Недавно я прошел курс рубинов по рельсам coursera.org из Университета Джона Хопкинса, это помогло мне лучше понять различные концепции. Дайте ему идти, если вы свободны, кстати, это бесплатно. https://www.coursera.org/specializations/ruby-on-rails –