尝试覆盖 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
干杯