How to Add ToS Agreement to Your Rails App using Devise?

In this article, I will show you how to add functionality to your signup view, which will make the user to agree your app’s Terms of Service (ToS) when creating new account.

I am using these gems:

Rails 6.1.4.1
Devise 4.8
Simple Form 5.1
Haml 5.2


This content originally appeared on DEV Community and was authored by Zil Norvilis

In this article, I will show you how to add functionality to your signup view, which will make the user to agree your app's Terms of Service (ToS) when creating new account.

I am using these gems:

  • Rails 6.1.4.1
  • Devise 4.8
  • Simple Form 5.1
  • Haml 5.2

I presume that you already have Devise and your User model setup and ready to go.

STEP 1
Generate Devise registration controller with this command:

rails g devise:controllers users -c=registrations

and let your routes know about it:

# routes.rb

devise_for :users, controllers: {
      registrations: 'users/registrations'
  }

and generate your registration view, where you will add ToS agreement checkbox input:

rails g devise:views -v registrations

STEP 2
First off, you need to add new column to your database schema, with migration like this:
rails g migration AddTosAgreementToUsers tos_agreement:boolean

the migration file is gonna look like this:

# 20220108144502_add_tos_agreement_to_users.rb

class AddTosAgreementToUsers < ActiveRecord::Migration[6.1]
  def change
    add_column :users, :tos_agreement, :boolean
  end
end

migrate the change with rails db:migrate

STEP 3
Add the following to your User model so it forces ToS agreement to be checked before allowing to successfully submit registration form. Also make sure to include on: :create, so this checkup is not forced on when user is just updating the profile.

# users.rb

validates_acceptance_of :tos_agreement, allow_nil: false, on: :create

STEP 4
Permit the 'tos_agreement' param

# users/registrations_controller.rb

  def configure_sign_up_params
    devise_parameter_sanitizer.permit(:sign_up, keys: [:tos_agreement])
  end

STEP 5
Add the checkbox input to your registration form. I use link_to method to insert a link leading to my pre-created ToS page.
Terms of Service Checkbox Preview

# app/views/devise/registrations/new.html.haml
= f.input :tos_agreement, as: :boolean,
         label: "I agree to #{link_to 'Terms of Service',
           terms_of_service_path, target: '_blank'}".html_safe

That's it, now you should have a nice functionality that will force your app users to agree to your terms before creating new account.


This content originally appeared on DEV Community and was authored by Zil Norvilis


Print Share Comment Cite Upload Translate Updates
APA

Zil Norvilis | Sciencx (2022-01-13T14:15:41+00:00) How to Add ToS Agreement to Your Rails App using Devise?. Retrieved from https://www.scien.cx/2022/01/13/how-to-add-tos-agreement-to-your-rails-app-using-devise/

MLA
" » How to Add ToS Agreement to Your Rails App using Devise?." Zil Norvilis | Sciencx - Thursday January 13, 2022, https://www.scien.cx/2022/01/13/how-to-add-tos-agreement-to-your-rails-app-using-devise/
HARVARD
Zil Norvilis | Sciencx Thursday January 13, 2022 » How to Add ToS Agreement to Your Rails App using Devise?., viewed ,<https://www.scien.cx/2022/01/13/how-to-add-tos-agreement-to-your-rails-app-using-devise/>
VANCOUVER
Zil Norvilis | Sciencx - » How to Add ToS Agreement to Your Rails App using Devise?. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2022/01/13/how-to-add-tos-agreement-to-your-rails-app-using-devise/
CHICAGO
" » How to Add ToS Agreement to Your Rails App using Devise?." Zil Norvilis | Sciencx - Accessed . https://www.scien.cx/2022/01/13/how-to-add-tos-agreement-to-your-rails-app-using-devise/
IEEE
" » How to Add ToS Agreement to Your Rails App using Devise?." Zil Norvilis | Sciencx [Online]. Available: https://www.scien.cx/2022/01/13/how-to-add-tos-agreement-to-your-rails-app-using-devise/. [Accessed: ]
rf:citation
» How to Add ToS Agreement to Your Rails App using Devise? | Zil Norvilis | Sciencx | https://www.scien.cx/2022/01/13/how-to-add-tos-agreement-to-your-rails-app-using-devise/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.