Je travaille sur un projet où le modèle de données est:modèle de rails utilisant la hiérarchie de classe à partir d'une gemme externe?
- mis en œuvre dans un gem
- ne pas utiliser ActiveRecord, ni aucun stockage de base de données relationnelle (en fait il repose sur CouchDB)
- marques l'utilisation des espaces de noms
- fait un usage intensif de l'héritage de classe
Pour simplifier le schéma, disons que nous avons la classe racine suivante:
module Marketplace
module Food
class Fruit
…
end
end
end
Et deux classes spécialisées:
module Marketplace
module Food
class Peach < Marketplace::Food::Fruit
…
end
class Tomato < Marketplace::Food::Fruit
…
end
end
fin
Je voudrais Rails pour afficher (et gérer) tous les fruits quel que soit leur nature, sans modifier la sorcière modèle fonctionne parfaitement sur Rails.
Le problème est qu'ActionView semble utiliser un certain nombre de conventions pour définir les chemins et les URL qui seront basés sur les noms de classe réels.
Donc, si je présente un Apple, dans un tableau avec des actions show/delete, les rails rechercheront une méthode nommée marketplace_food_apple_path et similaire qui bien sûr n'existe pas.
Existe-t-il un moyen d'indiquer les structures ActionView :: Base qu'un Apple est un Fruit?
Je m'attendrais à ce que cette «distribution de base» soit «triviale» pour un framework basé sur Ruby mais il semble que cet exemple simple de modèle orienté objet ne fonctionne pas avec Rails?
Comment gérez-vous les modèles de données 'objet complexe' dans les rails?
Ou est-ce simplement hors de portée de Rails?
Merci pour les pointeurs!
Non ce n'est pas ce que je veux du tout! Je cherchais un moyen de gérer un modèle existant qui utilise la classe * class * inhertance dans Rails. Semble que ce n'est pas possible, ni cela sera possible dans Rails 3.0. C'est dommage et c'est pourquoi je suis passé à Ramaze. L'inclusion/extension de module est une fonctionnalité intéressante mais qui ne correspond pas du tout à notre schéma de modèle de données, principalement parce que le modèle existe déjà et fonctionne parfaitement avec Rails. Je ne cherche donc pas à changer nos composants pour les adapter à Rails, mais à utiliser Rails pour exposer sur le Web une logique d'application existante. – devlearn