Viniendo de una larga historia de sintaxis de estilo C y ahora tratando de aprender Ruby (en Rails), he estado teniendo mi cuota de problemas con sus modismos y tal, pero hoy llegué a uno con el que no esperaba tener un problema y no puedo ver lo que sea que debe estar frente a mi cara.Error: Intento llamar al método privado
Tengo una clase Binaria que incluye un método privado para derivar un valor de URI a partir de un valor de ruta (uri y path son atributos de la clase). Estoy llamando desde dentro self.get_uri_from_path()
Binary.upload()
, pero me sale:
Attempt to call private method
Un fragmento del modelo se parece a esto:
class Binary < ActiveRecord::Base
has_one :image
def upload(uploaded_file, save = false)
save_as = File.join(self.get_bin_root(), '_tmp', uploaded_file.original_path)
# write the file to a temporary directory
# set a few object properties
self.path = save_as.sub(Rails.root.to_s + '/', '')
self.uri = self.get_uri_from_path()
end
private
def get_uri_from_path
return self.path.sub('public', '')
end
end
estoy haciendo la llamada de forma incorrecta? ¿Me estoy perdiendo algo más que es aún más fundamental? El único lugar desde el que se llama al Binary.get_uri_from_path()
es Binary.upload()
. Esperaría poder llamar a un método privado desde la misma clase a menos que Ruby haga algo marcadamente diferente de otros idiomas que he usado.
Gracias.
Gracias. Un poco más de excavación me ayudó a entender las diferencias en los métodos privados de Ruby vs. otros idiomas. Simplemente no esperaba diferencias en ese nivel. –
de nada. Es cierto que es un poco más complicado, pero en realidad tiene sentido después de un tiempo :) – marcgg
Me parece que una gran cantidad de Ruby es excelente, lacónico, pero expresivo, pero definitivamente tengo que luchar en los deltas idiomáticos. :-) –