2012-10-25 20 views
11

Mam pole o nazwie ads_counter w mojej bazie danych i muszę zwiększać jego wartość za każdym razem, gdy ta reklama jest renderowana.Zwiększanie licznika w bazie danych

Próbowałem napisać niestandardową metodę i użyć jej w kontrolerze odpowiedzialnym za te dane, ale to nie zadziałało. Czy istnieją wbudowane metody zwiększania wartości pola w bazie danych?

+0

Jeśli udostępniasz swoje struktury możemy pomóc uzyskać więcej informacji! Dziękuję Ci! – felipeclopes

+0

już znaleźć inny sposób, przy użyciu update_attributes.Thanks – Avdept

+0

Najlepszym sposobem, aby to zrobić jest wywołanie przyrost od update_attributes walidacji połączeń i rzeczy. Polecenie increment robi dokładnie to, o co prosiłeś. – felipeclopes

Odpowiedz

22

Tak, istnieje metoda increment, którą można wywołać w ActiveRecord.

Dla porównania: increment

Edit:

Aby zaoszczędzić bezpośrednio użyć increment!

Można go używać w ten sposób:

instance.increment!(:ads_counter) 

automatycznie zwiększa się o 1

sumujący 10
instance.increment!(:ads_counter, <number>) 

To przez numer podany

+0

Wielkiego, pełna odpowiedź: szacunek do docs + prawdziwym przykładem + trochę więcej około + ładny sformatowana. Dzięki. –

1

Masz metodę increment! sumujący atrybut i zapisuje rekord

your_object.increment!(:ads_counter) 

umieścić ten kod w metodzie kontrolera show.

+0

ta metoda zwiększa tylko o 1, czy są dodatkowe parametry? – Avdept

+0

Możesz użyć 'your_object.increment! (: Ads_counter, 42)'; Jest tam link do dokumentu metody w moim odpowiedź – Baldrick