Я проверил, что они на самом деле не работают:
class User < ActiveRecord::Base
def self.call_protected_method
protected_method
end
def self.call_private_method
private_method
end
protected
def self.protected_method
puts "protected_method"
end
private
def self.private_method
puts "private_method"
end
end
Я имею в виду, что они не работают, это вы можете вызывать все методы в этом примере. Не имеет значения, находятся ли они под частным или защищенным доступом.
# in rails console:
User.call_protected_method # => protected_method
User.protected_method # => protected_method
User.call_private_method # => private_method
User.private_method # => private_method
Это почему? В чем причина игнорирования «частных» и «защищенных»?
ОБНОВЛЕНИЕ: мой вопрос не в том, как это сделать. У меня вопрос, почему этот подход не работает в моделях рельсов !?