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.
# 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
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/
Please log in to upload a file.
There are no updates yet.
Click the Upload button above to add an update.