2010-12-14 76 views
3

J'ai un modèle Rails avec des attributs X, Y, Zun modèle Rails Augmentation des attributs virtuels sur l'exécution

Je veux ajouter dynamiquement des attributs P, Q à ce modèle pendant les extraction de données. Les attributs P, Q n'ont pas besoin de persistance et ne sont utilisés que pour la manipulation frontale.

Est-ce possible? Je pourrais y arriver en stockant P, Q dans un autre objet et en manipulant cela avec le modèle original mais en pensant à demander ce qui pourrait être le meilleur.

[rails 2.3.5, rubis 1.8,7]

Répondre

0

Essayez quelque chose comme ça dans votre modèle

def p 
    @p || @p = fetch_p 
end 

Cela vous permettra d'appeler your_model.p. Au premier appel, il appelle la fonction fetch_p et la stocke en tant qu'attribut de classe. Lors de tout appel ultérieur, il retournera simplement la valeur mise en cache.

+0

Que fait fetch_p? – papdel

+0

fetch_up doit être écrit par vous. Il obtient la valeur de p, qu'elle soit calculée ou extraite de quelque part (un fichier, une base de données, etc.). En d'autres termes, fetch_p fait ce que vous voulez dire quand vous dites "ajouter dynamiquement des attributs P à ce modèle pendant l'extraction de données" –