2014-01-26 2 views
1

이 "볼 수있는"작품과 그 내용은 무엇입니까? 나는 그것을 얻지 않는다 ... 제품 모델에서 우리는 같은 :as => :viewable 매개 변수를 가진 관계가있다. viewable 인 경우 한 곳만 찾았습니다. viewable_idassets 표에 있습니다.볼 수있는 속성은 어떻게 작동합니까?

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

이것은 고전적인 다형성 관계입니다. 자세한 내용은 레일 안내서의 Active Record Association Basics 페이지에 나와 있지만 간단한 용어는 자산 테이블에 여러 가지 유형의 자산과 유사한 객체가 저장된다는 것을 의미합니다.

제품 모델은 두 가지 유형의 자산을 선언합니다. 하나의 Image와 많은 Contents 객체. 저작물 표는 두 유형 모두에 대한 세부 정보를 저장하는 데 사용됩니다. 즉, 별도의 이미지 표 및 콘텐츠 표가 없습니다.

Assets의 viewable_id는 제품 ID의 외래 키입니다. viewable_type은 애셋이 이미지인지 또는 콘텐츠 객체인지를 나타냅니다.

관련 문제