2014-01-26 48 views
1

你能告訴我這個「可見」是如何工作的嗎?我不明白... 在產品模型中我們有兩個:as => :viewable參數的關係。我發現只有一個地方viewable - 在assets表中有viewable_id可見屬性如何工作?

class Product < ActiveRecord::Base 
    has_one :image, :as => :viewable 
    has_many :contents, :as => :viewable 
end 


class Asset < ActiveRecord::Base 
    belongs_to :viewable, :polymorphic => true 
end 

class CreateAssets < ActiveRecord::Migration 
    def change 
    create_table :assets do |t| 
     t.string :viewable_type 
     t.integer :viewable_id 
    end 
end 

回答

2

這是一種經典的多態關係。詳細信息請參閱Rails指南的Active Record Association Basics頁面,但它很簡單,它意味着Assets表將存儲多種不同類型的資產類對象。

產品模型聲明兩種類型的資產。一個圖像和許多內容對象。資產表將用於存儲這兩種類型的詳細信息,即不會有單獨的圖像表和內容表。

Assets中的viewable_id將是產品ID的外鍵。 viewable_type將指示資產是圖像還是內容對象。