2 votes

Remplacement de la fonction attributaire rails mongoid

J'ai un modèle comme celui-ci.

class Money
  include Mongoid::Document

  #interval is how often the compensation is paid
  field :salary, :type => Integer # must be saved in cents
  field :commission, :type => Integer # must be saved in cents
  field :total, :type => Integer # must be saved in cents
end

Le total est la somme du salaire et de la commission. Le salaire et la commission sont tous deux enregistrés en cents. Mais mon problème est que lorsqu'il est édité, je dois l'afficher en dollars.

Par exemple, si le salaire en cents est de 5000000, lorsque je clique sur "modifier", je dois voir 50000 dans la zone de texte du salaire.

D'autres solutions sont également les bienvenues

3voto

Calin Points 647

Si vous voulez appliquer ce modèle au niveau du modèle, vous pouvez remplacer les setters et getters :

class Money
  #...
  def salary
    self.salary / 100
  end
  def salary=(value)
    self.salary * 100
  end
end

Dans ce cas, vous aurez l'édition/affichage gratuitement, sans avoir à écrire d'aide.

Cependant, je pense que la bonne façon de le faire est au niveau de la vue par le biais d'une définition d'aide. Le modèle ne devrait pas être concerné par cela.

2voto

megas Points 10549

Regardez ActionView::Helpers::NumberHelper . Dans votre cas, vous pourriez écrire votre propre aide comme ceci :

def money_to_textbox (money)
    money / 100
end

Cette méthode d'aide doit être placée dans l'application \helpers et ensuite dans une vue vous pouvez utiliser comme ceci :

<%= money_to_textbox @money %>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X