Potrzebuję użyć procent w mojej aplikacji Rails. W dowolnym widoku, w tym w przypadku wprowadzenia przez użytkownika, format musi być w formacie setek, 100.000
. Kiedy jest używany w obliczeniach, musi być reprezentowany w setnym formacie, 1.00000
.Przechowywanie procentu w Railsach + MySQL
Moja migracja (Dodaję kolumny do istniejącej tabeli) ma następującą linię: (1.00000
) formatu
add_column :worker, :cash_split, :decimal, :precision => 6, :scale => 5
Więc od teraz, ja przechowywanie go w setnych. Moją podstawą wyboru przechowywania w tym formacie jest to, że rozumiem czystszą logikę biznesową (tzn. Nie kłamie żaden kod worker.cash_split/100.0.to_d
), gdy potrzebuję wykonać mnożenie.
Moja jedyna myśl była może nadużywanie metody built_of. Mogłem przechowywać dane w setkach (100.000
) w formacie cash_split, a następnie utworzyć atrybut accessor cash_split_percentage
, który zwraca cash_split
w swoim odpowiedniku w formacie 1.0000.
Jak obsługiwałbyś procenty w formularzach? Użytkownicy będą chcieli wprowadzić go w postaci 45%, ale powinien on być zapisany jako 0.45. Niemniej jednak, jeśli użytkownik wprowadzi inne pole źle, a formularz zostanie ponownie renderowany, pole procentowe powinno mieć wartość 45, a nie 0,45. Chciałbym powiedzieć, że callback może nie być ostatecznym rozwiązaniem. –
można napisać programy pobierające i ustawiające dla wartości procentowej w formacie setek. więc będziesz miał atrybut #some_ratio i metody #some_ration_percentage & # some_ration_percentage =, które po prostu podzieli/pomnoży 100 i przejdą dalej. – Emirikol