2012-10-12 34 views
1

所以我有一個控制器從應用程序控制器的子類。它定義了各種受保護的方法,以及應用程序控制器。現在,如果應用程序控制器已經定義了這些方法,我不希望它們被它的子類覆蓋。我一直在努力的事情在這個控制器,如:軌道控制器,只覆蓋受保護的方法,如果他們沒有定義

class SomeController < ApplicationController 

protected 
    unless instance_methods.include? "some_method" 
    def some_method 
    end 
    end 

但是,使用Rails的記錄器,我仍然可以看到some_method被調用。

+0

我不明白你的問題。你知道你的'ApplicationController'中有哪些方法,對吧?所以不要在你的子類中定義它們。或者我錯過了什麼? – Mischa

+1

詳細說明,這個SomeController是Rails引擎的一部分,我們也在某些情況下將它作爲獨立應用程序使用。所以如果它是獨立的,它從actioncontroller繼承,並定義方法。如果它是一個引擎,則它從父級的應用程序控制器繼承。由於父級的應用程序方法對於其目的是正確的,因此我不需要覆蓋引擎中的那些方法,因爲它會導致我們遇到一些問題:) – agmcleod

回答

相關問題