ActiveSupport::Concern
Railsモジュール内でプライベート メソッドを作成することは理にかなっていますか?
懸念事項は、最終的に他のクラスに含まれるスマート モジュールであることを考えると、そうです。これは単なる移植可能なコードであり、抽出可能な動作であり、作成中のコントローラー (またはモデルなど) の一部と見なしたいと考えています。したがって、基本的には、メソッドを宣言するprivate
かprotected
、通常どおりに宣言するだけです。
リンクした投稿は2013 年以降に更新されている可能性がありますが、DHH はそこにある例の 1 つでまさにそれを行っています。
module Dropboxed
extend ActiveSupport::Concern
included do
before_create :generate_dropbox_key
end
def rekey_dropbox
generate_dropbox_key
save!
end
private # <- Let's 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