我是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,但它似乎无法使用活动的管理资源。所以,对于主动管理控制器和模型,我必须创建任何其他模块(即在其他位置,比如说/ admin /)或我必须做的任何事情?
我们可以在像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 :(得分: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
答案 1 :(得分: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
文件夹中的文件时需要重新启动服务器。