Salut,
Comment reproduire sur les controlleurs le comportement polymorphique
des modèles ? Bon dis comme ça c pas forcement clair. Alors reprenons
l’exemple de l’Agile Web D. with Rails :
Les classes Article, Sound, Image héritent de CatalogEntry grâce Ã
l’association polymorphique. Ces trois classes ont un attribut qui est
le contenu (content) avec des types différents.
class CatalogEntry < ActiveRecord::Base
belongs_to :resource, :polymorphic => true
end
class Article < ActiveRecord::Base
has_one :catalog_entry, :as => :resource
end
class Sound < ActiveRecord::Base
has_one :catalog_entry, :as => :resource
end
class Image < ActiveRecord::Base
has_one :catalog_entry, :as => :resource
end
Maintenant j’aimerais avoir un controlleur pour afficher le contenu de
ces modèles. J’imagine avoir un controlleur par classe. A priori je
compte afficher le catalogue et appeller la méthode d’affichage sur
l’élément du catalogue. Donc j’appelle la methode show_content du
controlleur CatalogEntryController qui lui devrait répercuter l’appel
sur la même méthode du controlleur fils.
class CatalogEntryController < ApplicationController
def show_content
Et là j’aimerais appeler la méthode show_content du controller “fils”.
C’est bête mais je ne sais pas comment faire.
end
end
class ArticleController < CatalogEntryController
def show_content
end
end
class SoundController < CatalogEntryController
def show_content
end
end
class ImageController < CatalogEntryController
def show_content
end
end
Comment appelle-t-on la méthode de la classe fille ? Pour appeller la
méthode de la classe parent c’est “super” mais comment ça marche dans
l’autre sens ??
Toute aide serait appréciée !
H