J'ai l'intention de stocker dans une base de données une quantité minimale d'informations relatives à un livre (titre, isbn). Cependant, à l'affichage je voudrais afficher des attributs supplémentaires (pages, auteur, image de couverture) non stockés dans la base de données. Je prévois d'obtenir cette information à partir des Amazon Web Services (AWS) en utilisant Ruby/AWS. Je suis très nouveau sur Ruby on Rails et je ne suis pas sûr exactement comment cela devrait/devrait être effectué. Parmi les options qui me viennent à l'esprit, citons la modification du contrôleur de livres ou la création d'un modèle entièrement séparé basé sur les entités Amazon qui repose sur la recherche de livres répertoriés uniquement dans ma base de données.Ruby on Rails MVC Question
Répondre
Votre modèle de livre ActiveRecord peut être personnalisé pour récupérer les attributs supplémentaires d'AWS. Votre point de vue et les contrôleurs seront sans idée et au sec.
Je suggère de créer des méthodes dans le modèle. Allez-vous toujours tirer l'info supplémentaire chaque fois que vous montrez ces entrées? Sinon, vous voudrez peut-être avoir une action différente du contrôleur pour le "étendu" (c'est-à-dire avec des informations amazon) ou "limité" (c'est-à-dire sans l'information amazon) et avoir l'autre standard. De cette façon, vous pouvez tirer exactement ce que vous voulez quand vous le voulez et assurez-vous que vous frappez Amazon seulement quand vous en avez besoin, et non avec chaque appel ou appel d'index.
Lorsque vous avez besoin de traiter des données, dans n'importe quel environnement MVC, il doit aller dans le modèle. Vous pouvez créer une autre méthode other_information qui utilise || = pour obtenir les autres informations d'AWS ou renvoyer les informations d'une variable d'instance. Ou bien vous pouvez créer une méthode find_with_info qui récupère tout en même temps :)
Mais gardez avec défi toutes les tâches liées aux données dans le modèle.
- 1. Ruby on Rails Question - Réponse Site Web
- 2. File d'attente Ruby on Rails question
- 3. Ruby on Rails d'installation
- 4. OCIError (ruby on rails)
- 5. ruby on rails formulaire_pour
- 6. Ruby on Rails regex
- 7. Ruby on Rails: « find_create_by_user »
- 8. LocalJumpError (Ruby on Rails)
- 9. Triple rejoindre Ruby on Rails
- 10. Version ASP.NET MVC de Ruby on Rails "link_to_unless_current"
- 11. Ruby On Rails ID personnalisé
- 12. Ruby on Rails symbole validation
- 13. Antipatterns avec Ruby on Rails
- 14. Analyser dans Ruby (on Rails)
- 15. ruby on rails Problème SQLite
- 16. Connexion/Inscription Ruby on Rails?
- 17. Ruby on Rails SQL Optimisations
- 18. Association polymorphe Ruby on Rails
- 19. Afficher l'email Ruby on Rails
- 20. Ruby on Rails - Se connecter
- 21. Ruby on Rails: Erreur rubygem
- 22. Ruby on Rails vs Django
- 23. Liste triable Ruby on Rails
- 24. Ruby on Rails et CruiseControl.rb
- 25. CMS pour Ruby on Rails
- 26. Formulaire booléen Ruby on Rails
- 27. Ruby on Rails: formulaire select
- 28. Ruby on Rails Actions help
- 29. Ruby on Rails, détection Javascript
- 30. Ruby on Rails - paramètre tronquer
Cela a du bon sens. Devrais-je créer des définitions ou des attributs pour effectuer la recherche à partir du modèle? – ahsteele
Créer des méthodes nommées (pages, auteur, image_couverture, etc.). Dans ces méthodes, récupérez les informations amazon et renvoyez la valeur demandée. Vous n'aurez probablement pas besoin de faire un appel AWS pour chaque attribut afin de mettre en cache les résultats AWS en les glissant dans une variable d'instance de l'enregistrement actif tel que (@my_aws_result). Cela ne persistera pas, mais vous limiterez au moins les demandes AWS à 1 par demande d'utilisateur final. Évidemment, vous pouvez utiliser une mise en cache plus avancée sans vous soucier de perturber votre contrôleur et vos vues. Le modèle va encapsuler ces détails. – jrhicks