0

Rails 3.1.4 アプリには user と user_position があります。ユーザーには多くの user_position があり、user_position はユーザーに属します。ユーザーモデル:

accepts_nested_attributes_for :user_positions, :allow_destroy => true
validates_presence_of :user_positions

ユーザーが保存されると、user_positions も自動的に保存されます。user_positions を自動保存するには、user および user_positions のほとんどのフィールドを として宣言する必要がありますattr_accessibleattr_accessibleユーザーモデルは次のとおりです。

attr_accessible :name, :login, :password_confirmation, :password, :user_positions_attributes

user_position モデルの内容は次のとおりです。

  belongs_to :user 
  attr_accessible :position  
  validates :position, :presence => true

ご覧のとおり、ここにあるすべてのフィールドは一括割り当てが可能です。:as => :adminここではうまく機能していないようです。それらのフィールドを保護する方法は?本当にありがとう。

4

2 に答える 2

1

同じ呼び出しで変更しない場合は、パスワードやその他の脆弱なフィールドを attr_accessible として設定する必要はありません。したがって、これは機能するはずです:

user.user_positions.first.position = "some update"
user.save

検証で保存に失敗した場合、それは保存アクションの問題であり、何らかの理由でパスワードが更新されます。それでも解決しない場合は、ここに貼り付けてください。

于 2012-07-16T07:24:24.100 に答える
0

私たちが行ったことは、user モデルと user_position モデルの両方で、同じセキュリティ ロール :admin を attr_accessible に追加することでした。この変更により、ユーザー情報の作成と更新が可能になります。不要な大量割り当てに対するセキュリティを提供しますか? そうらしい。しかし、私たちはそれをテストして検証しませんでした.

于 2012-07-16T16:29:53.870 に答える