17

大量割り当てとは何か、およびそれをどのようにコーディングするかを明確にしたいだけです。大量割り当ては、ハッシュを使用した多くのフィールドの割り当てです。つまり、..

@user = User.new(params[:user])

これを防ぐには、次のようにattr_accessibleを使用します。

attr_accessible :name, :email

:admin のようなフィールドを一括割り当てで追加できないようにするには?

ただし、コードで次のように変更できます。

@user.admin = true

attr_accessibleがなければ、一括代入ですべてにアクセスできるというのは本当ですか?

そして最後に注意が必要な点は... "attr_accessible :name" のような1 つのattr_accessibleを使用しても、他のすべてのフィールドに一括割り当てでアクセスできないというのは本当ですか?

4

3 に答える 3

12

あなたの仮定はすべて正しいです。attr_accessibleがない場合、すべてのフィールドは一括割り当てに対してオープンです。attr_accessibleの使用を開始すると、指定した項目のみが一括割当可能になります。

于 2011-03-11T19:06:58.923 に答える
6

Srdjanが指摘したように、あなたの仮定はすべて正しいです。ご存知のように、attr_accessible の反対である attr_protected メソッドもあります。

言い換えると

attr_protected :admin

:admin が一括割り当てされるのを防ぎますが、他のすべてのフィールドは許可します。

于 2011-03-11T22:43:32.383 に答える
3

config.active_record.whitelist_attributesに設定されfalseていると仮定すると、Srdjanの答えは正しいconfig/application.rbです。

に設定すると、またはが使用されない限り、デフォルトtrueですべての属性が一括割り当てから保護されます。attr_accessibleattr_protected

于 2013-03-02T19:48:27.880 に答える