我明白你如何使用CLASS_NAME選項在Active Directory中提及的命名空間模式:如何在名稱空間模型中使用多態關聯?
has_one :slide, :class_name => '::Refinery::Slides::Slide'
以及如何使用多態關聯
has_one :slide, :as => :slideable
你可以用它們在一起嗎?
has_one :slide, :class_name => '::Refinery::Slides::Slide', :as => :slideable
如果是這樣,你如何定義多態關聯?
belongs_to :slideable, :polymorphic => true, class_name='::Refinery::Slideables::Slideable' #NO
我與RefineryCMS工作,每次添加引擎獲取煉油廠:: PluralModel :: SingularModel命名空間。基本上,我希望能夠將幻燈片與案例研究或工作相關聯。這裏是實際的模型。
module Refinery
module CaseStudies
class CaseStudy < Refinery::Core::BaseModel
attr_accessible :title, :description, :position
has_one :slide, :class_name => '::Refinery::Slides::Slide', :as => :slideable
end
end
end
module Refinery
module Works
class Work < Refinery::Core::BaseModel
attr_accessible :title, :description, :position,
has_one :slide, :class_name => '::Refinery::Slides::Slide', :as => :slideable
end
end
end
module Refinery
module Slides
class Slide < Refinery::Core::BaseModel
attr_accessible :slide_id, :caption, :position, :slideable_id, :slideable
belongs_to :slide, :class_name => '::Refinery::Image'
belongs_to :slideable, :polymorphic => true
end
end
end
好像我應該可以說slide.slideable.title,但我得到一個錯誤: 未定義的方法'標題」的零:NilClass
apidoc指定inverse_of無法與多態使用,但沒有提及class_name
謝謝你這麼徹底的回答!我對能夠刪除class_name持懷疑態度,但現在呢 - 會回來並讓你知道。 – tim 2013-04-24 12:41:31
它看起來像你說得對,我可以刪除CLASS_NAME因爲在我的形式我設置slideable_type這樣 slide.radio_button(:slideable_type,煉油廠::作品::工作,:檢查=>(:slideable_type == '作品')) – tim 2013-04-24 13:32:32