SQL -> Ror

Witam,

Mam tabele w bazie TABLE_A(nazwisko, od, do)

Przy dodawaniu do bazy dodaje sie tylko nazwisko i od.
Do wypełnia trigger.
Trigger nic nie robi jesli do bazy wstawiam nowe nazwisko. A jesli wstawiam takie ktore istniej w bazie, to trigger wstawia rekord i aktualizuje pole do przy rekordzie ktory juz byl w bazie.

Moze pokaze jka to w SQL mam:

[code=“sql”]CREATE OR REPLACE FUNCTION fupdatepcto() RETURNS TRIGGER AS
$$
BEGIN
UPDATE pc SET owner_to = now() where sn = NEW.sn AND owner_to is null;
RETURN NEW;
END;
$$
LANGUAGE ‘plpgsql’ VOLATILE;
ALTER FUNCTION fupdatepcto() OWNER TO postgres;

CREATE TRIGGER fruitlimit BEFORE INSERT ON pc FOR EACH ROW EXECUTE PROCEDURE fupdatepcto();[/code]
tabela i pola nazywaja sie inaczej ale o to samo chodzi.

nazwisko_od_do
kowalski | 1 | |

Po insercie insert into tabela values(kowalski, 2) bedzie

nazwisko_od_do
kowalski | 1 | 2 | <- uzupelnione 2
kowalski | 2 | | <- nowy rekord

Po insercie insert into tabela values(nowacki, 5) bedzie

nazwisko_od_do
kowalski | 1 | 2 |
kowalski | 2 | |
nowacki |5 | | <- nowy rekord

Czy zachowac tego triggera w bazie czy przeniesc go do modelu?
Chce w pewnych przypadkach gdy jest aktualiowane okreslone pole to aby nie bylo update tylko insert i update.
A z kolei jak jest aktualizowane inne pol to bylo tylko update. Ciezko troche to przeniesc do triggera.

Pozdrawiam

Jeśli nie jesteś fanatykiem który lubi trzymać całą logikę w plsql’u to najlepiej przenieś ją do modelu. Łatwiej wprowadzać zmiany, poza tym logika aplikacji jest w aplikacji a nie trochę w aplikacji a trochę w bazie na triggerach/procedurach.

A jak powinna wygladac implementacja tego triggera na modelach, bo nie za bardzo sam wiem.

Pozdro

Cos w tym stylu powinno byc ok:

[code=ruby]after_create :check_uniqueness

protected

def check_uniqueness
other = find_by_nazwisko(self.nazwisko)
if other
other.do = self.id
other.save
end
end[/code]
Stosuj angielskie nazwy atrybutow, to badzo ulatwia sprawe.