6

というフィールドにシリアル化されたハッシュを格納する Rails アプリケーションがありますproperties

ただし、ハッシュキーは不明であるため、強力なパラメーターでこれを許可する方法がわかりません。

グーグルで検索すると、https://github.com/rails/rails/issues/9454が見つかりましたが、解決策が何であるかを正確に把握できませんでした。

基本的に、私の質問は次のとおりです。未知のキーでハッシュを許可するように強力なパラメーターを構成するにはどうすればよいですか?

助けてくれてありがとう!

4

4 に答える 4

6

最近、この同じ問題が発生し、 https: //github.com/rails/rails/issues/9454 の @fxn の方法を使用して解決しました

propertiesハッシュとしての製品の場合、次のように解決しました

def product_params
  params.require(:product).permit(:title, :description).tap do |whitelisted|
    whitelisted[:properties] = params[:product][:properties]
  end
end

for:raiseの代わりに使用する場合は、を呼び出す前にfromを削除することを忘れないでください。次に、メソッドは次のようになります:logconfig.action_controller.action_on_unpermitted_parametersenvironmentpropertiesparamspermit

def product_params
  properties = params[:product].delete(:properties)
  params.require(:product).permit(:title, :description).tap do |whitelisted|
    whitelisted[:properties] = properties
  end
end
于 2014-07-15T07:16:06.440 に答える
6

これらの答えはどれも(Rails 4.2.4を使用して)うまくいかなかったため、次の回避策を見つけました。

def product_params properties_keys = params[:product][:properties].keys params.require(:product).permit(:title, :description, properties: properties_keys) end

それが誰かを助けることを願っています。

于 2015-12-21T20:24:49.540 に答える