ユーザー アカウントのパスワードを使用して、ユーザーのアクションの一部を制限しようとしています。転送コントローラーがあり、ユーザーは転送コントローラーの create メソッドを使用して送金できます。
ユーザーが転送ボタンをクリックして転送を検証するたびにパスワードを要求したいのですが、Web 上でそれに関連するものを見つけることができませんでした。
ビューにパスワード フィールドを追加し、パスワードがユーザー アカウントのパスワードである場合にのみ転送を処理したいと考えています。
ユーザーアカウントの管理にdeviseを使用しています。
どうすればそれができますか?
ありがとう、
形 :
<%= form_for current_user.transfers.build do |f| %>
<div class="amount">
<h5>Select an amount</h5>
<div class="amount-btns">
<a class="amount-btn" href="#"><span data-amount="10">10$</span></a>
<a class="amount-btn" href="#"><span data-amount="20">20$</span></a>
<a class="amount-btn" href="#"><span data-amount="30">30$</span></a>
<a class="amount-btn" href="#"><span data-amount="50">50$</span></a>
<%= f.hidden_field :amount, :id => :amount %>
<%#= f.hidden_field :teen_id , :id => :user_id_auto_donation %>
</div>
</div>
<div class="choose-amount">
<div class="choose-amnt" action="#">
<div class="form-row choose-lnk">
<%= f.collection_select :teen_id, current_user.followed_users, :id, :first_name , include_blank: false, :prompt => 'Select a Teen' %>
</div>
<%= hidden_field_tag :no_card if !current_user.customer_id? %>
<%= password_field(:password, :password, :size => 20, :class => 'form_input') %>
<%= f.submit 'Send', :class => "orange-btn", :id => "send_donation"%>
<% end %>
Transfer_Controller :
def create
Rails.logger.debug(params[:password])
Rails.logger.debug(current_user.valid_password?(params[:password]))
if current_user.valid_password?(params[:password])
....
else
redirect_to :back
end
Rails.logger.debug(params[:password]) は、入力したパスワードと正しいパスワードを返します。
Rails.logger.debug(current_user.valid_password?(params[:password])) は false を返しますが、params[:password] を実際のパスワードに置き換えると true が返されます
ご協力いただきありがとうございます !