2011-03-11 11 views
16

大量割り当てがどのようなものであり、どのようにコードするのかを明確にしたいだけです。 質量割り当てハッシュを使用して多くの分野の割り当て、すなわちなどの...Railsの質量割り当て定義とattr_accessible use

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

そして、あなたはattr_accessible使用し、これを阻止することであるように:

attr_accessible :name, :email 

だから、そのようなフィールド:管理者一括割り当てで追加できませんでしたか?

しかし、我々のようなもので、コードでそれを変更することができます。

@user.admin = true 

だから、私たちはattr_accessibleを持っていないならば、すべてが質量割り当てのためにアクセス可能であるというのは本当ですか? 「:名前はattr_accessible」すべて他のフィールドは今質量割り当てのためにアクセスないであることを意味し

そして最後にトリッキーなポイント...それは一つもattr_accessibleと似ていること本当ですか?

答えて

11

あなたの前提はすべて正しいです。 attr_accessibleを指定しないと、すべてのフィールドは質量割り当てに開放されます。 attr_accessibleの使用を開始すると、指定したフィールドだけが一括割り当てに開放されます。

5

Srdjanが指摘したように、あなたの前提はすべて正しいです。 attr_accessibleとは逆のattr_protectedメソッドもあります。大量に割り当てられているから、管理を他のすべてのフィールドを許可します:つまり

attr_protected :admin 

は防ぐことができます。

2

config.active_record.whitelist_attributesconfig/application.rbfalseに設定されていると仮定して、Srdjanの答えが正しいとします。

それはtrueに設定されている場合はattr_accessibleまたはattr_protectedが使用されていない限り、すべての属性がデフォルト、質量割り当てから保護されます。

関連する問題