2010-06-24 20 views
8

Acabo de empezar a aprender Rieles (3). Me estoy arrancando los pelos tratando de encontrar cómo hacer algo presumiblemente completamente trivial: acceder al valor del campo de una instancia modelo, desde dentro de un método en ese modelo.Rieles: accediendo al valor de campo del método modelo

En mi caso:

def formal_name 
    @title + " " + @forename + " " + @surname 
end 

Los tres @properties (que son todos los campos de la tabla en la base de datos) devuelven nil. No deberían.

Increíblemente, cómo acceder a los campos no se discute en http://guides.rails.info/, y google no aparece nada.

Por cierto, vengo de Django, donde esto es obvio.

Respuesta

10

La sintaxis @ se utiliza para variables de instancia que (por ejemplo) se llenan en controladores y luego se usan en vistas. No es lo que estás haciendo aquí.

En realidad sólo tiene

def formal_name 
    title + " " + forename + " " + surname 
end 
0

Tiene que omitir @, acceder a ellos a través de métodos getter. En algunos casos, debe usar self.<field> debido a la ambigüedad.

0
class MyModel << ActiveRecord 

    def formal_name 
    title = self.title # return title attribute of instance 
    forename = self.forename 
    surename = self.surname 

    # or something like this 
    self.title + self.surename 
    end 

end 
+1

Por qué 'self.fieldname' aquí y simplemente' fieldname' en la otra respuesta? ¿'Self' te permite ser más específico sobre el alcance? p.ej. si tuviera que declarar una variable local en el método con el mismo nombre que el campo? –

Cuestiones relacionadas