Pregunta

En los carriles podemos acceder a través de la columna db atributos carriles previstos, pero podemos cambiar esto? Por ejemplo, he db con la columna nombre podría implementar algo similar.

def name
  "sir" + name
end

Lo probé, pero producen un desbordamiento de pila. Hay una manera de lograr esto.

última pregunta, ¿Hay alguna diferencia entre el nombre y self.name.

¿Fue útil?

Solución

def name
  "sir" + read_attribute(:name)
end

Pero evitar esta práctica. Utilizar un captador adicional / definidor lugar, también conocido como "atributo virtual". Para obtener más información, lea esta respuesta: decorar un atributo en los carriles

En su caso, también hay un efecto secundario raro. Cada vez que se accede al atributo, se añade el nombre. Después de 3 llamadas, usted termina con

"sir sir sir name"

De hecho, puede hacerlo

def name
  n = read_attribute(:name)
  if /^sir/.match(name)
    n
  else
    "sir #{n}"
  end
end

pero, en serio, no lo haga.

Otros consejos

Si usted es consciente de las posibles complicaciones, pero todavía tiene que hacer esto, entonces:

def name
  "sir" + self[:name]
end

Uso super

Rubí Sustitución de

Tiene que dar muchas explicaciones, pero creo que es tan simple como una llamada al método que ya está definido

def name
  "sir #{super}"
end
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top