신규 사용자 등록 양식의 동의 확인란(밸리데이션) 구현

3924 단어 RailsRails4


웹 서비스의 신규 유저 등록 폼에서 볼 수 있는, 「동의 체크 박스」를 구현합니다.
데이터베이스에 열을 추가하지 않고 validates_acceptance_of라는 유효성 검사를 사용합니다.

1.View



new.html.erb
<h1>新規ユーザ登録フォーム</h1>

<div class="row">
    <div class="col-md-6 col-md-offset-3">
        <%= form_for(@user) do |f| %>


            ...省略...


            <%= f.check_box :agreement, :as => :boolean, checked:false %>
            利用規約とプライバシーポリシーに同意する

            <%= f.submit "Create my account", class: "btn btn-large btn-primary" %>

        <% end %>
    </div>
</div>

우선, 체크 박스를 <%= f.check_box :agreement, :as => :boolean, checked:false %> 라는 바람에 추가. 이번은 동의이므로, :agreement 로 했습니다.

2. Model



user.rb
class User < ActiveRecord::Base

  validates_acceptance_of :agreement, allow_nil: false, on: :create

  ...省略...

end

밸리데이션을 validates_acceptance_of라는 형태로 추가합니다.

3. Controller



users_controller.rb

  def create
    @user = User.new(user_params)
    if @user.save
      flash[:success] = "登録が完了しました!"
      redirect_to @user
    else
      render 'new'
    end
  end

  def user_params
    params.require(:user).permit(:name, :email, :password, :password_confirmation, :agreement)
  end
end

검색할 매개 변수에 :agreement를 추가합니다.

구현 완료!





위 코드를 통해 동의했는지 여부를 확인란의 유효성 검사를 통해 확인할 수 있습니다.

참고



Devise 및 simple_form으로 회원 가입 시 이용 약관에 동의 확인 - 아이디어 요약 노트

좋은 웹페이지 즐겨찾기