2

私が取り組んでいるRailsプロジェクトの場合、ユーザーのモデルのほとんどの情報は、2要素認証の電話番号など、機密情報として扱われます。

emailモデルの基本、、、、passwordおよびをホワイトリストに登録しただけpassword_confirmationです。

一括割り当てで設定できる属性が少ない場合に、この種のユーザーのサインアップフォームを設定する方法を理解しようとしています。通常のattr_accessibleプロパティのセットと、新しいユーザーインスタンスを作成するときにのみアクセスできる2番目のセットを指定する方法はありますか?

4

2 に答える 2

1

何が問題なのかわかりません。フォームがフォームデータを投稿するコントローラーアクションが何であれ、次の値からモデルのホワイトリストに登録されていない値を直接設定しますparams

def create
  user = User.new(params[:user]) 
  user.phone_number = params[:user][:phone_number]
  ... <other non-whitelisted attribute assignments> ...
  user.save!
end

これはphone_number、ホワイトリストに登録された属性のリストにない場合でも(つまりattr_accessibleUserモデルのの引数に表示されていない場合でも)機能します。ホワイトリストに登録されていない他のフォーム属性についても同じことができます。

于 2012-09-28T04:05:42.223 に答える
0

attr_accessibleはクラス上にあるため、いつでもクラスを再度開いて定義し直すことができます。

class User
    attr_accessible :email, :password, :password_confirmation
end

それはあなたが望むどのコントローラーメソッドにも当てはまります。完了したら、クラスを再度開いて、新しいattr_accessibleを設定できます。

しかし、それは恐ろしいことです。代わりに、attr_accessibleの定義を確認し、それが直接行うことを実行してみてください。多分。

于 2012-09-28T04:00:53.950 に答える