lsol
1
Hej, chciałbym się zapytać czy da się napisać setter wykorzystując inna metodę, który wylicza wartość, poniżej przykład:
[code]def day_off=(time_off_in_days)
self.day_off = time_off_in_days
end
def time_off_in_days
@day_off = (self.date_to - self.date_from).to_i
end[/code]
Dziękuje za pomoc.
Po pierwsze: parametr time_off_in_days przesłoni metodę o tej samej nazwie. Po drugie:
self.day_off = time_off_in_days
powyśze spowoduje zapętlenie.
Być może chodzi ci o coś takiego:
def set_day_off
self.day_off = time_off_in_days # wywołanie metody
end
Być może o to (chociaż to normalne działanie settera):
def day_off=(time_off_in_days)
write_attribute(:day_off, time_off_in_days) # zapisanie wartości parametru
end
Lub o coś pomiędzy…
lsol
3
Dzięki za pomoc, zainspirowałeś mnie 
Dopiero po użyciu
before_save :set_day_off
zadziałało.
Zrobiłem to w ten sposób:
[code]before_save :set_day_off
def set_day_off
write_attribute(:day_off, time_off_in_days)
end
def get_day_off
day_off
end
def time_off_in_days
(self.date_to - self.date_from).to_i
end[/code]