推奨される解決策は次のとおりです。
config.active_record.whitelist_attributes = true
ただし、これはアクティブレコードを使用している場合にのみ機能します。Mongoid Railsプロジェクトでは、同様のアプローチがありますか?アクティブモデルを使用しますが、アクティブレコードは使用しません。
推奨される解決策は次のとおりです。
config.active_record.whitelist_attributes = true
ただし、これはアクティブレコードを使用している場合にのみ機能します。Mongoid Railsプロジェクトでは、同様のアプローチがありますか?アクティブモデルを使用しますが、アクティブレコードは使用しません。
私はMongoidを使用したことがないので、これはかなり推測的ですが、その外観から、ARはRailtie初期化子を使用して、その構成がtrueの場合にattr_accessible(nil)を設定します。
現在、構成でそれを行う方法はないようですが、おそらく独自のイニシャライザーで何らかの方法でフックすることができます。Mongoid :: Fieldsでは、protect_sensitive_fieldsの構成がtrue(デフォルト)の場合、id、_id、および_typeに対してattr_protectedを呼び出します。また、active_authorizerをブラックリストに設定します。おそらくそれをパッチして、代わりにattr_accessible(nil)を呼び出すホワイトリストのより良い設定を与えることができます。
そうですね、パッチを作成してからプルリクエストを送信するのは悪い考えではありません。ルビーコミュニティが最後に必要とするのは、もう1つの注目を集める大量割り当ての大失敗です。
これは今のところトリックを行います:
http://groups.google.com/group/mongoid/browse_thread/thread/de5a93a350b49c02?pli=1
私は同じ質問をしました
https://groups.google.com/forum/?fromgroups#!topic/mongoid/xuBbuyhiFEU
現在はサポートされていませんが、(まっすぐ進む)モンキーパッチを実行できます(Benediktが提案したように)
https://gist.github.com/1977438
これはARと非常によく似ています(ARコードをチェックインできます。簡単にするためにここにコピーします)
ActiveSupport.on_load(:active_record) do
if app.config.active_record.delete(:whitelist_attributes)
attr_accessible(nil)
end
app.config.active_record.each do |k,v|
send "#{k}=", v
end
end