2016-11-26 35 views
1

到目前爲止,大多數s 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 

我現在有一個使用相同的私有方法,並希望中央地方來存儲它的許多控制器。你知道,保持乾燥的東西。何處放置這些私有方法以便在從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存在。

回覆:模塊,它不需要在模塊中,除非您最終想要將它混合到除ApplicationController之外的另一個類中。