2010-12-10 21 views
0

J'ai une application que je construis pour apprendre les rails. C'est un simple gestionnaire de pages qui utilise awesome_nested_set pour créer des pages imbriquées. Je voudrais utiliser STI, mais je ne sais pas comment faire ce travail. La plupart des exemples que je vois de STI impliquent un modèle principal "Pets" et des sous-modèles de "Dog" et "Cat"; J'ai du mal à en faire un exemple concret. Voici comment j'utilise les pages.Un modèle de page, différentes dispositions/vues. Comment puis-je tirer parti des IST?

3 différents types de pages: Blog, Photo, Mobile Photos. La seule façon de vraiment décrire cela est de vous montrer mon site actuel construit dans Coldfusion Blog, Photo, Mobile Photos.

Tous utilisent la même table et à peu près les mêmes attributs. Les sections de photos utilisent un attribut photo et ont quelques modifications mineures telles que le téléchargement, le redimensionnement, etc. - mais à part cela, tout est identique entre les différents "types". La principale différence entre les types de page est comment la page sera disposée et comment ils sont accédés. Par exemple:

Sur l'index:
/photos - vignettes de mise en page pour afficher toutes les pages w/un type de "Photo"
/blog - mise en page pour afficher toutes les pages w/un type de "Blog"

Sur le spectacle:
/photos/1 - Voir la grande photo w/précédente/suivante
/blog/2 - entrée de blog show w/précédent/entrée suivante

Ai-je besoin d'un contrôleur distinct pour chaque type? Ai-je besoin de modèles distincts si je n'ai pas besoin de modifier la façon dont les pages sont créées/mises à jour? Est-ce que je crée simplement des routes qui pointent vers une action qui rend la mise en page dont j'ai besoin? Je pense que je vois le terme «STI» et le rend plus difficile que cela doit être. Je suis juste prudent parce que je veux apprendre la "voie des rails". Ai-je même besoin de STI?

Toute aide serait grandement appréciée, j'ai juste besoin de franchir cette bosse, quelqu'un m'aidera à la faire "cliquer"! :)

Répondre

3

Here I have written a blog post qui vous guidera étape par étape dans l'accomplissement de STI.

En ce qui concerne la classe Photo va où vous devez télécharger les images que vous pouvez le faire

class Photo < Page 

attr_accessor :photo_file_name, :photo_file_size, :photo_file_type 

    has_attached_file :photo, 
        :url => "#{your_upload_url}", 
        :path => "#{your_upload_path}" 
end 

Si vous utilisez ce code, vous devez avoir une colonne avec photo de nom vous page modèle qui stockera les nom_fichier du fichier téléchargé.

J'espère que cela vous a aidé. Je suis ici si vous avez besoin de plus de suggestions à ce sujet. : D

MISE À JOUR

Après avoir lu la question une fois de plus je réalisais que vous avez aussi besoin d'une page séparée pour tous les enfants des classes IST. Par conséquent, vous aurez besoin de différents contrôleurs pour gérer cela.