Jak pobierać dane z instancji w modelu?

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 :slight_smile:

1 Like

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.

1 Like

OK, czyli do kolumn przez self. Chyba rozumiem.

self nie jest tutaj potrzebny

1 Like