Mam w tabeli jakieś kolumny z liczbami. Chcę je dodać. W modelu zrobiłem def z nową metodą. Jako return dałem @kolumna + @inna_kolumna.
Nie działa, bo nie ma metody “+” dla NilClass. Oczywiście chodzi mi o Integera, a nie NilClass.
Mam w tabeli jakieś kolumny z liczbami. Chcę je dodać. W modelu zrobiłem def z nową metodą. Jako return dałem @kolumna + @inna_kolumna.
Nie działa, bo nie ma metody “+” dla NilClass. Oczywiście chodzi mi o Integera, a nie NilClass.
Zakładając, że wywołujesz metodę na instancji klasy (obiekt.nowa_metoda), to powinna ona tak wyglądać:
def nowa_metoda
self.kolumna + self.inna_kolumna
end
Twój kod działałby gdybyś przypisał do zmiennej @kolumna = self.kolumna
. Podstawy obiektowości w ruby. Nie jestem w stanie tego lepiej wytłumaczyć, może inny użytkownik lepiej to zrobi
W Ruby coś takiego działa. Myślałem, że w RoR też.
class K
def initialize
@a = 2
@b = 33
end
def sum
s = @a + @b
end
end
k = K.new
puts k.sum
To co próbujesz wywołać jako zmienna instancyjna to metody zwracające wartości przypisane do obiektu, dlatego nie działa.
OK, czyli do kolumn przez self. Chyba rozumiem.
self nie jest tutaj potrzebny