0

最近アップグレードした Rails 3.2 アプリでの大量割り当ての問題について、何らかの助けが得られることを願っています。

Rails 3.2 では、属性がデフォルトでロックされていることを理解しています。属性を割り当てるには、attr_accessible を使用して「ロックを解除」する必要があります。これは、通常のモデル属性に対してはうまく機能します。

ただし、任意の名前のプロパティを任意のモデルに追加できる自家製のカスタム プロパティ ミックスインがあります。これらのプロパティは、custom_properties テーブルに格納されます。この mixin は、モデルに foo.property_foobar のようなプロパティを要求すると、missing メソッドを利用してそのテーブルからプロパティを探します。

この mixin を使用する各モデルは、任意の名前の X カスタム プロパティを持つことができます。これらのプロパティの名前を口述する能力がないため、attr_accessible への追加が明らかに困難になります。

これらの動的プロパティの一括割り当てを許可する方法に関する推奨事項はありますか? すべてのモデル属性をホワイトリストに登録したくありません。

うまくいけば、これはすべて理にかなっています。みんな、ありがとう!

ルイ

4

1 に答える 1

0

attr_protected1 つの解決策は、代わりに使用することです。これにより、残りを許可しながら、一部の属性をブラックリストに登録できます。ただし、これを確保するのは少し難しいです。

別の解決策は、割り当て保護をコントローラーに移動し、各コントローラー/アクションで必要に応じて属性を許可/拒否することです。これを可能にするstrong parametersという gem があり、これも Rails 4 に含まれる予定です。私はこの解決策を提案します。

上記のいずれもうまくいかない場合は、これらの任意の属性を実装する別の方法を試してみてください。たとえば、代わりにデータベース列にシリアル化されたハッシュとして格納できます。

于 2013-01-10T23:08:21.580 に答える