ActiveAdmin:从其他引擎加载和使用模型不起作用

ActiveAdmin: load and use models from other engine doesn't work

我按照 wiki 中的指南在我的主应用程序中使用我的引擎中的模型并激活管理员。

我唯一必须改变的(维基中没有提到的)是:

if defined?(ActiveAdmin)
  ActiveAdmin.register Blog::Category do
  end
end

我刚刚添加:Blog::。 在我的引擎 "Blog" 中,我添加了一个名为 "category" 且具有 name:string 属性的模型。但是当我在活动管理员中添加一个时,字段名称没有保存在数据库中。我的请求参数是:

{"utf8"=>"✓", "authenticity_token"=>"PzKDTcoJZ6Sy2tXgw9WSwXiR7aZp81lOtBvfD5Ec3F72H5L7MEMLjlOFgKWQBo2U4n9mPc7AgjcIS3MTIY2nZA==", "category"=>{"name"=>"asdasd"}, "commit"=>"Update Category", "id"=>"1"}

知道为什么它没有保存在数据库中吗? 当我创建一个新记录时,记录已创建但没有我的输入。

我运行陷入同样的​​问题。我能够通过覆盖 activeadmin 控制器操作(例如 app/admin/category.rb)来正确保存资源,如下所示

ActiveAdmin.register Blog::Category do

  permit_params :the, :parameters, :for, :your, :resource

  controller do
    def create
      @category = Blog::Category.new permitted_params[:category]
      if @category.save
        notice = 'Category was successfully created.'
        redirect_to admin_blog_category_url(@category), notice: notice
      else
        render :new
      end
    end
  end
end

我不确定在默认情况下到底发生了什么,但我的猜测是 activeadmin 控制器操作没有在正确的命名空间中创建对象——也就是说,它做了类似 @category = Category.new 而不是 @category = Blog::Category.new:update 操作似乎也需要类似的覆盖。