37
29

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

新規ユーザ登録フォームの同意チェックボックス(バリデーション)を実装する

Last updated at Posted at 2016-06-13

06377c78be37ce806f377cd52854eddd.png

Webサービスの新規ユーザ登録フォームで見かける、「同意チェックボックス」を実装します。
データベースにカラムを追加せず、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 を追加します。

実装完了!

https://gyazo.com/175df30e4c2c7a1e0edb01638cff4065

以上のコードで、同意したかどうかをチェックボックスのバリデーションで判断することができるようになりました。

参考

Deviseとsimple_formで会員登録するときの利用規約への同意確認 - 考えまとめノート

37
29
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
37
29

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?