如何在其他文件中包含和使用proc?

时间:2012-11-06 18:35:27

标签: ruby-on-rails rails-admin

我正在使用rails_admin,如何使用rails_admin配置模型的选项似乎有一个rails_admin.rb配置文件(但是这个文件很大,我必须在每次更改后重新启动服务器):

RailsAdmin.config do |config|
   config.model ModelName do
       ..

或在每个模型中包含配置块:

 class ModelName
     rails_admin do
         ..

但我宁愿在模型中没有配置块,因为这些块变得非常长。

所以我最初尝试从模型的每个配置块创建mixins:

  module ModelNameAdmin
      rails_admin do
          ...

这不起作用,因为它无法识别rails_admin。

这样做也不起作用:

 module ModelNameAdmin
     RailsAdmin.config do |config|
         config.model ModelName do

但这不起作用,因为显然RailsAdmin配置不能被多次调用。

所以现在我想做的只是有一个带有Proc定义的lib文件,我可以在每个模型中包含和使用。所以喜欢:

  model ModelName
       require('./lib/model_name_admin')

       rails_admin do
            @model_name_admin
       end

在./lib/model_name_admin文件中有:

  @model_name_admin = Proc.new
       rails_admin do
           ..

但这不起作用。我认为我没有正确使用过程。

1 个答案:

答案 0 :(得分:1)

在您的模块中尝试此模式:

module ModelNameAdmin
  def self.included(base)
    base.class_eval do
      rails_admin do
        #...
      end
    end
  end
end

只要模块包含在类中,class_eval内的块就会被执行。