Dans un post précédant, je détaillais le chargement d'une base NoSQL à partir d'une base de données relationnelle en mentionnant l'usage d'Active record sans Rails.
ActiveRecord et maintenant ActiveRelation sont des ORM qui s'utilisent indépendamment des autres composants de Rails.
Il suffit pour cela d'instancier un objet Base en lui fournissant les éléments de connexion à la base de données.
(clic pour agrandir)
J'utilise par la suite ActiveRecord en métaprogrammation :
def _create_class(tclass)
uftclass = "Tempo_" + tclass
eval "
class #{uftclass} < ActiveRecord::Base
set_table_name \"#{tclass}\"
end
"
fields= eval "#{uftclass}.column_names"
end
Ainsi je crée des classes à la volée qui héritent d'Activerecord. Cette opération dynamique se fait par une clause 'eval'.
L'instanciation se fait plus loin dans le code par là aussi un éval:
(clic pour agrandir)
Aucun commentaire:
Enregistrer un commentaire