1

尝试覆盖 Active Admin 资源上的创建操作时,我看到了一些奇怪的行为。我覆盖该操作的原因是我想先稍微更改请求参数。

ActiveAdmin.register User do

  controller do

    def create
      format_params

      create!
    end

    def update
      format_params

      update!
    end

    def format_params
      params[:user] = ...
    end

  end

end

我看到的是一个创建操作被调用了两次——但只有第二次是我的覆盖版本。到那时,新记录已经创建,尽管不正确,并且第二次调用(这覆盖的版本)看起来像一个重复的资源。

如果我清空自定义 #create 操作并只留下一个日志记录语句,我可以看到在调用它之前仍在创建记录,几乎就像有某种 before_ 回调,虽然我找不到任何这样的代码中的东西。

更奇怪的是——在被覆盖的#update方法上一切正常——参数被改变了,原来的#update!正确委派给的方法。

我在 Rails 3.2.13 上使用 Active Admin 0.5.1

干杯

4

0 回答 0