2016-11-26 5 views
1

これまでのところ、earched questionsのほとんどは「違いは何ですか?」です。私は、異なるコントローラ間でそれぞれを再利用する方法を知る必要があります。Railsでのプライベートメソッドの再利用5

以下は単なる例です。

ApplicationControllerに:

private 
def redirect 
    redirect_to welcome_path 
end 

任意のコントローラ:

class AnyController < ApplicationController 
before_action :redirect, only: :about 

def about 
end 
end 

私は今、同じプライベートメソッドを使用して多くのコントローラを持っており、それを格納するための中心的な場所にしたかったです。あなたが知っている、それはDRYのようなことを保つ。 ApplicationControllerを継承するすべてのコントローラでこれらのプライベートメソッドを再利用する場所はどこですか?このような質問に既に回答している場合は、私に指摘してください。ありがとう。

+0

'private'を' public'として使うのは矛盾ですか? 'private'メソッドと' public'メソッドの違いを理解していますか? –

+0

@Зелёныйはい。私はまた、私が見つけた古い本からそれを分かった。プライベートメソッドを 'app/controllers/concerns/private_rules.rb'のモジュールに配置してから、モジュールを' applicationcontroller'に追加しました。幸せな日々。 – Sylar

答えて

1

ApplicationControllerを継承するコントローラ を介してこれらのプライベートメソッドを再利用する場所はどこですか?

あなたがメソッドを持っているApplicationControllerから継承するクラスをしたい場合は、あなただけApplicationControllerでそれを配置する必要があります:

class ApplicationController < ActionController::Base 

private 

def redirect_to welcome_path 
end 
end 

class AnyController < ApplicationController 
    # gets the redirect_to welcome_path method 
end 

ApplicationControllerが存在する理由です。

Re:モジュール:ApplicationController以外のクラスに最終的に混ぜたい場合を除き、モジュールに入れる必要はありません。

関連する問題