2010-11-09 3 views
2

Je tente d'implémenter un type spécifique de contrôle de version pour plusieurs de mes modèles (fondamentalement différent de ce que acts_as_versioned et vestal_versions fournissent). Quelle est la meilleure façon de mettre en œuvre un modèle ActiveRecord virtuel piloté par plusieurs modèles ActiveRecord classiques, dans lesquels les données du modèle n'existent pas en une seule ligne dans une même table? En d'autres termes, comment créer un modèle ActiveRecord où les méthodes CRUD sont substituées et appeler des méthodes appropriées sur plusieurs modèles ActiveRecord sous-jacents?Virtual ActiveRecord Model

+1

Voulez-vous utiliser l'une des méthodes ActiveRecord: Base? – rwilliams

+0

Idéalement, j'aimerais avoir des associations. Si ActiveRecord s'avère trop difficile à étendre, je suppose que je pourrais utiliser ActiveModel et remplacer les getters et les setters d'attribut de modèle. – hadronzoo

+0

Ou peut-être DataMapper serait un choix plus approprié que ActiveRecord? – hadronzoo

Répondre

0

je recommande le nouveau livre « Crafting Rails Applications » des programmeurs Pragmatique http://pragprog.com/titles/jvrails/crafting-rails-applications

Le deuxième chapitre fait quelque chose de très similaire .. tout ce qu'il faut en plus de cela, est de mettre en œuvre quelque chose de similaire à activerecord-3.0.3/lib/active_record/persistence.rb, qui agit comme un intermédiaire entre votre modèle virtuel et les modèles persistants sous-jacents.

+0

J'ai fini par écrire un plugin DataMapper, qui s'est révélé plus extensible que ActiveRecord. Cependant, le chapitre que vous référencez ressemble à une bonne solution AR. – hadronzoo