0

如何使用通過STI繼承的兩種不同模型保存和查看has_many關係?通過STI使用has_many與多重模型類型

我已經得到了項目基本型號如下:

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.

注:如果沒有HomepageItem定義的has_many,該項目被保存,但是不會創建任何圖片。這也是一個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 –

相關問題