Thread View: pl.comp.lang.ruby
5 messages
5 total messages
Started by Piotr Czeszkiewicz
Mon, 09 Jul 2007 08:04
Rails i after_update
Author: Piotr Czeszkiewicz
Date: Mon, 09 Jul 2007 08:04
Date: Mon, 09 Jul 2007 08:04
35 lines
1693 bytes
1693 bytes
Witam
Mógłby ktoś mi wytłumaczyć jak przy użyciu funkcji zwrotnych
after_update lub podobnych wykonać poniższe zadanie.
1. Jest sobie zgłoszenie,
2. Zmianiam stan zgłoszenia na "Zakończone"
3. Chciałbym, aby w tym momencie została wypełniona data zakończenia
zgłoszenia.
Robię to tak, jak poniżej (czemu nie działa)?
class ZgloszeniaController < ApplicationController
def edit
@zgloszenie = Zgloszenie.find(params[:id])
if request.post?
if @zgloszenie.save
@zgloszenie = Zgloszenie.find(params[:id])
flash[:info] = 'Dane zostały zapisane.
end
end
render :action => 'edit', :id => @zgloszenie
end
class Zgloszenie < ActiveRecord::Base
after_update :data_zamkniecia
def data_zamkniecia
if self.stan == 'Zakończone'
self.closed_at = Time.now
end
end
Re: Rails i after_update
Author: Piotr 'piter' Hlawski
Date: Mon, 09 Jul 2007 09:34
Date: Mon, 09 Jul 2007 09:34
57 lines
2836 bytes
2836 bytes
Piotr Czeszkiewicz wrote: > Witam > > Mógłby ktoś mi wytłumaczyć jak przy użyciu funkcji zwrotnych > after_update lub podobnych wykonać poniższe zadanie. > > 1. Jest sobie zgłoszenie, > 2. Zmianiam stan zgłoszenia na "Zakończone" > 3. Chciałbym, aby w tym momencie została wypełniona data zakończenia > zgłoszenia. > > Robię to tak, jak poniżej (czemu nie działa)? > > class ZgloszeniaController < ApplicationController > > def edit > @zgloszenie = Zgloszenie.find(params[:id]) > if request.post? > if @zgloszenie.save > @zgloszenie = Zgloszenie.find(params[:id]) > flash[:info] = 'Dane zostały zapisane. > end > end > render :action => 'edit', :id => @zgloszenie > end Po co dwa razy Zgloszenie.find(params[:id])? > > > class Zgloszenie < ActiveRecord::Base > > after_update :data_zamkniecia > > def data_zamkniecia > if self.stan == 'Zakończone' > self.closed_at = Time.now > end > end Nie działa, bo after_update się co prawda odpali, ale nie zadziała już ponowne save na bieżącym obiekcie, a ty wyraźnie chcesz zmieniać wartość zmiennej instancji _tego_ obiektu. Zrób to before_ - sprawdź w nim czy stan == 'Zakończone' i ustaw datę. A przy okazji, nie możesz mieć pola o nazwie updated_at? Rails by ci automatycznie ustawiał datę, i skoro stan będzie miał wartość 'Zakończone' to i tak wiadomo będzie, że data która aktualnie znajdować się będzie w polu updated_at będzie dotyczyła Zakończenia, czyż nie? -- .:: Piter // phlawski$gmail,com // gg: 4534287 ::. Kiedy Bóg powiedział "Niech stanie się światłość", Chuck Norris dodał "Powiedz, 'proszę'."
Re: Rails i after_update
Author: Piotr Czeszkiewicz
Date: Tue, 10 Jul 2007 12:38
Date: Tue, 10 Jul 2007 12:38
17 lines
1508 bytes
1508 bytes
Piotr 'piter' Hlawski napisał(a): > > Po co dwa razy Zgloszenie.find(params[:id])? Błąd, w rzeczywistości jest tylko raz. > > A przy okazji, nie możesz mieć pola o nazwie updated_at? Rails by ci > automatycznie ustawiał datę, i skoro stan będzie miał wartość 'Zakończone' > to i tak wiadomo będzie, że data która aktualnie znajdować się będzie w > polu updated_at będzie dotyczyła Zakończenia, czyż nie? > Faktycznie to najlepsze rozwiązanie. Dzięki. -- Piotr Czeszkiewicz
Re: Rails i after_update
Author: Piotr 'piter' Hlawski
Date: Tue, 10 Jul 2007 12:56
Date: Tue, 10 Jul 2007 12:56
18 lines
1863 bytes
1863 bytes
Piotr Czeszkiewicz wrote: >> >> A przy okazji, nie możesz mieć pola o nazwie updated_at? Rails by ci >> automatycznie ustawiał datę, i skoro stan będzie miał wartość >> 'Zakończone' to i tak wiadomo będzie, że data która aktualnie znajdować >> się będzie w polu updated_at będzie dotyczyła Zakończenia, czyż nie? >> > > Faktycznie to najlepsze rozwiązanie. Dzięki. Dorób jeszcze pole created_at i będziesz miał komplet informacji :) -- .:: Piter // phlawski$gmail,com // gg: 4534287 ::. Nie próbujcie tłumaczyć Chuckowi Norrisowi słowa "aerodynamika". Nie zrozumie. Nie żeby był tępy, po prostu powietrze jak dotąd nie odważyło się stawiać mu oporu.
Re: Rails i after_update
Author: Piotr Czeszkiewicz
Date: Tue, 10 Jul 2007 19:39
Date: Tue, 10 Jul 2007 19:39
10 lines
1256 bytes
1256 bytes
Piotr 'piter' Hlawski napisał(a): > Piotr Czeszkiewicz wrote: > > Dorób jeszcze pole created_at i będziesz miał komplet informacji :) > To już miałem wcześniej -- Piotrek
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads