2009-10-16 9 views
0

Je me retrouve à faire les mêmes choses encore et encore juste pour faire une petite modification à la sortie du modèle standard. J'ai une série de tableaux sur lesquels je stocke des informations sur les produits, etc. et qui stockent tous les prix. Les prix sont stockés en dollars américains mais la sortie dépend de la devise que l'utilisateur veut stocker dans une session.modification de base de sortie de modèle par défaut avec la portée

Exemples:

Product Detail Blah Price 
Hammer Red  More 5.00 
Nail  Blue Stuff 3.99 

Est-il un moyen simple et robuste, pour modifier la sortie de sorte que lorsque je l'appelle:

Product.all 

je pouvais attacher quelque chose comme

Product.all.currency('EUR') 
Product.find(22).currency('EUR') 
Product.find(:all, :conditions => 'etc etc').currency('EUR') 

ou

Product.all.currency(0.69) 

et simplement multiplier tous les articles dans la colonne Prix? Est-ce que named_scope pourrait le faire?

Répondre

0

... Pas grave

named_scope :currency, :select => '*, price * 0.63 AS price' 

semblait fonctionner sauf que je ne peux pas enchaîner à la normale trouve que je le voudrais.

1

essayer réorganisant votre enchaînant comme:

Product.currency(0.69).all 

Je ne l'ai pas testé, mais vous pouvez avoir problème avec d'autres conditions arbitraires depuis votre :select contient *

Questions connexes