2013-07-29 31 views
1

我想在我的rails應用程序的lib目錄中創建一個類,其中的方法都是在類上調用的。在每個這些方法之前,我想運行一些對所有這些方法都通用的代碼。我環顧四周,找到了一些方法,但它們似乎只與實例方法相關,而不是類方法。before_filter喜歡在lib類中的功能

我的類看起來有點像這樣:

class Push 

    def self.user_checked_in(user, trip) 
     ... 
    end 

    ... Other methods ... 

end 

我想是有東西像

before_filter :method 

就像在控制器。什麼是最好的方法呢,還是可以簡單地包含來自控制器的負責任的代碼?

+0

檢查一下,是否滿足您的需求? http://stackoverflow.com/questions/15034125/implement-a-rails-before-filter-in-ruby-without-rails –

回答

0

我不喜歡用不必要的方法混淆我的控制器。就你而言,我認爲最簡潔的方法是使用裝飾器。 This post涵蓋了Ruby中的一些裝飾器,並且非常受歡迎。我個人喜歡this decorator gem。然後你的方法應該是這樣的:

class Push 
    +MyDecorator 
    def self.user_checked_in(user, trip) 
     ... 
    end 
end 

如果你想爲每個單獨的方法做到這一點,你可以自己重寫method_added,但我建議用裝飾去,除非你有很多的方法:它更顯而易見,在不需要調用代碼的位置編寫方法會更容易。

+0

完美地工作。不錯的寶石:)我確實有一些方法可以使用它,但'method_added'技術感覺有點冒險,創建一個別名。現在我想用這個,謝謝:) – PaReeOhNos