在腳手架形式的管理員控制器中,我們無需擔心集體作業,我們僅使用許可證實施了強大的參數!方法(no .require()或.permit()),它應該簡單地將params allowed標誌設置爲true,將params對象中的任何內容白名單。Rails 4.2.4 params.permit!未能忽略utf字段的形式
private
def foo_params
params.permit!
end
,並在控制器中,我們有
def create
@foo = Foo.new(foo_params)
然而,在規格和運行應用程序時,控制器的創建方法拋出的異常:
unknown attribute 'utf8' for Foo
錯誤消失,如果我們添加.require(:MODEL)例如更改foo_params
private
def foo_params
params.require(:foo).permit!
end
.require()是否應該避免拋出一個異常,這是由於像utf8屬性這樣的神奇添加的Rails窗體屬性?
(如果這有什麼差別是升級從Rails的3.2到4.2,否則正常工作的應用程序。)
或者,它會工作做'@foo = Foo.new(foo_params [:foo])',但這有點笨重...... –
很好的解釋,謝謝! – jpwynn