2016-10-22 136 views
0

我是Ruby on Rails的新手。我正在使用rails 4.1.6,我想要的是在一個文本文件(like index page accessed, view page access etc..).中記錄所有的進程,因爲我想創建一個通用函數,其中我可以將文本作爲agrs傳遞給我,我做了一些R & D在那,我發現這個:In Rails, where to put useful functions for both controllers and models,但它似乎不與活動管理資源。因此,對於活動的管理控制器和模型,我必須創建任何其他模塊(即在其他位置,讓說/管理/)或其他任何我必須做的?Ruby on Rails 4:我必須把常用代碼放在哪裏?

是否有任何我們可以在cakephp中使用活動管理員類似組件的全局位置。

感謝

編輯

app/admin/driver.rb

ActiveAdmin.register User, as: 'Driver' do 
    ... 
    ... 
    index :download_links => false do 
     ... 
     ... 
     #call function to maintain log something like, 
     take_note('action performed') 
    end 
+0

您可以詳細說明您想要共享的代碼以及爲什麼需要共享它。海事組織它可以產生巨大的差異,如果例子的代碼做了一些特定的視圖或數據清理。 – spickermann

回答

0

最簡單的方法是創建在config/initializers文件夾中的文件 - 它們將被自動加載。

你也可以寫在application.rb,雖然我建議只做這個配置。

一個常見的模式是添加lib/到自動加載路徑,以便任何自定義文件可以使用 - 看Auto-loading lib files in Rails 4

這也許值得一提的是,你實際上可以訪問你的模型從任何地方爲好。


的評論

這裏,你可以在LIB /寫,如果你把它添加到您的自動加載路徑

class MyClass 
    def self.my_class_method 
    puts "i was called" 
    end 
end 

然後從其他地方調用它一個泛型類...

MyClass.my_class_method 
+0

可以請你解釋一個小例子,那我該如何使用lib / –

0

一個全局方法對我來說就像是一種代碼味道。相反,我會創建一個Note類或模塊。這不會污染全局名稱空間,並且更容易孤立地進行測試。

我會在初始化中添加如下代碼:

# in config/initializers/note.rb 
module Note 
    def self.take(message) 
    # log `message` 
    end 
end 

它可以在你的控制器中使用這樣的:

index :download_links => false do 
    # ... 
    Note.take('action performed') 
end 

請注意,您需要重新啓動您的服務器更換文件時在config文件夾中。

相關問題