Ответ 1
Имеет ли смысл создавать частные методы внутри модуля Rails
ActiveSupport::Concern
?
Учитывая, что проблемы - это интеллектуальные модули, которые в конечном итоге будут включены в другие классы - да, это так. Это просто переносимый код, извлекаемое поведение, и я бы хотел рассмотреть его как часть моего контроллера (или модели и т.д.), Когда я его пишу. Таким образом, вы просто объявляете методы private
или protected
, как обычно.
Возможно, сообщение, которое вы связали, обновлено с 2013 года, но DHH делает именно это в одном из примеров:
module Dropboxed
extend ActiveSupport::Concern
included do
before_create :generate_dropbox_key
end
def rekey_dropbox
generate_dropbox_key
save!
end
private # <- Let list some privates
def generate_dropbox_key
self.dropbox_key = SignalId::Token.unique(24) do |key|
self.class.find_by_dropbox_key(key)
end
end
end
Что касается методов класса private
, я согласен с @Hugo и никогда не использовал их сам, но вот как вы можете это сделать:
module Dropboxed
extend ActiveSupport::Concern
included do
private_class_method :method_name
end
module ClassMethods
def method_name
end
end
end