Исходя из долгой истории синтаксиса в стиле C и теперь пытаясь изучать Ruby (на Rails), у меня была своя доля проблем с его идиомами и тому подобным, но сегодня я столкнулся с тем, чего не ожидал у меня есть проблема, и я не могу видеть, что это должно быть прямо перед моим лицом.
У меня есть двоичный класс, который включает частный метод для получения значения URI из значения пути (uri и path являются атрибутами класса). Я звоню self.get_uri_from_path()
изнутри Binary.upload()
, но получаю:
Attempt to call private method
Фрагмент модели выглядит следующим образом:
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
Я звоню неправильно? Я скучаю по чему-то еще более фундаментальному? Единственное место, откуда Binary.get_uri_from_path()
вызывается - на данный момент - это Binary.upload()
. Я ожидаю, что смогу вызывать закрытый метод из того же класса, если только Ruby не делает что-то заметно отличающееся от других языков, которые я использовал.
Спасибо.