Skip to content

Commit e05ef83

Browse files
committed
Split users' name to first_name and last_name
1 parent 5ac1ea8 commit e05ef83

10 files changed

Lines changed: 36 additions & 13 deletions

File tree

app/controllers/application_controller.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@ def set_locale
3131
end
3232

3333
def configure_permitted_parameters
34-
devise_parameter_sanitizer.permit(:sign_up, keys: [:name, :username, :email])
34+
devise_parameter_sanitizer.permit(:sign_up, keys: [:first_name, :last_name, :username, :email])
3535
devise_parameter_sanitizer.permit(:sign_in, keys: [:username])
36-
devise_parameter_sanitizer.permit(:account_update, keys: [:name, :username,
36+
devise_parameter_sanitizer.permit(:account_update, keys: [:first_name, :last_name, :username,
3737
:email, :url, :locale,
3838
:twitter, :announce_my_presence,
3939
:github, :jabber,

app/models/user.rb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ class User < ApplicationRecord
1616
validates :username, uniqueness: {case_sensitive: false}, presence: true
1717
validates :twitter, format: {with: /\A[A-Za-z0-9_]{1,15}\z/}, allow_blank: true
1818
validates :url, format: {with: /\A(http|https):\/\/[a-z0-9]+([-.]{1}[a-z0-9]+)*\.[a-z-]{2,63}(:[0-9]{1,5})?(\/.*)?\z/ix}, allow_blank: true
19-
validates :name, presence: true
2019
validates :first_name, presence: true
2120
validates :last_name, presence: true
2221
validates :github, format: {with: /\A[a-z0-9][a-z0-9-]{,38}\z/i}, allow_blank: true
@@ -41,6 +40,10 @@ def email_md5
4140
Digest::MD5.hexdigest email
4241
end
4342

43+
def name
44+
[first_name, last_name].compact.join(" ").strip
45+
end
46+
4447
def twitter=(handle)
4548
write_attribute :twitter, handle.gsub(/\A@/, "") if handle
4649
end

app/views/devise/registrations/edit.html.slim

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ section.container
1717
| Avatar by
1818
=< link_to 'Gravatar', 'https://gravatar.com'
1919

20-
= f.input :name, required: true
20+
= f.input :first_name, required: true
21+
= f.input :last_name, required: true
2122
= f.input :username, required: true
2223
= f.input :email, required: true
2324
= f.input :locale, collection: I18n.available_locales, required: true

app/views/devise/registrations/new.html.slim

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ section.container
99
= f.error_notification
1010
.form-inputs
1111
= f.input :username, required: true, autofocus: true
12-
= f.input :name, required: true, autofocus: true
12+
= f.input :first_name, required: true, autofocus: true
13+
= f.input :last_name, required: true, autofocus: true
1314
= f.input :email, required: true, autofocus: true
1415
= f.input :password, required: true, hint: (t("views.registrations.minimum_characters", minimum: @minimum_password_length) if @validatable)
1516
= f.input :password_confirmation, required: true

bin/setup

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,12 @@ OptionParser.new do |opts|
2929
options[:username] = username
3030
end
3131

32-
opts.on('-n', '--name NAME', 'Name') do |name|
33-
options[:name] = name
32+
opts.on('-f', '--firstname FIRST_NAME', 'First name') do |first_name|
33+
options[:first_name] = first_name
34+
end
35+
36+
opts.on('-l', '--lastname LAST_NAME', 'Last name') do |last_name|
37+
options[:last_name] = last_name
3438
end
3539

3640
opts.on('-p', '--password PASSWORD', 'Password') do |password|
@@ -93,7 +97,8 @@ Dir.chdir APP_ROOT do
9397
print "\npassword confirmation: "
9498
password_confirmation = STDIN.noecho(&:gets)
9599
end
96-
options[:name] = prompt "\nname: " unless options[:name]
100+
options[:first_name] = prompt "\nfirst name: " unless options[:first_name]
101+
options[:last_name] = prompt "\nlast name: " unless options[:last_name]
97102
end
98103

99104
puts "Loading the rails environment."

config/locales/bg.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ bg:
4141
attributes:
4242
user:
4343
name: Име
44+
first_name: Собствено име
45+
last_name: Фамилия
4446
url: Сайт
4547
twitter: X
4648
username: Потребителско име

config/locales/en.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ en:
3535
attributes:
3636
user:
3737
name: Name
38+
first_name: First name
39+
last_name: Last name
3840
url: Site
3941
twitter: X
4042
username: Username

db/schema.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,8 @@
146146
t.datetime "last_sign_in_at", precision: nil
147147
t.string "current_sign_in_ip"
148148
t.string "last_sign_in_ip"
149-
t.string "name"
149+
t.string "first_name"
150+
t.string "last_name"
150151
t.string "url"
151152
t.string "twitter"
152153
t.boolean "announce_my_presence", default: false, null: false

spec/factories/users.rb

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22

33
FactoryBot.define do
44
factory :user, aliases: [:owner] do
5-
name { Faker::Name.name }
5+
first_name { Faker::Name.name }
6+
last_name { Faker::Name.name }
67
sequence(:username) { |u| "username#{u}" }
78
email { Faker::Internet.email }
89
locale { I18n.available_locales.first.to_s }
@@ -25,7 +26,8 @@
2526
end
2627

2728
factory :registration, class: User do
28-
name { Faker::Name.name }
29+
first_name { Faker::Name.name }
30+
last_name { Faker::Name.name }
2931
sequence(:username) { |u| "username#{u}" }
3032
email { |u| Faker::Internet.email(u.username) }
3133
password { Faker::Internet.password }

spec/models/user_spec.rb

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,15 @@
1313
expect(build(:user)).to be_a Devise::Models::Lockable
1414
end
1515

16-
describe "name" do
16+
describe "first_name" do
1717
it "must be present" do
18-
expect(build(:user, name: nil)).to have_error_on :name
18+
expect(build(:user, first_name: nil)).to have_error_on :first_name
19+
end
20+
end
21+
22+
describe "last_name" do
23+
it "must be present" do
24+
expect(build(:user, last_name: nil)).to have_error_on :last_name
1925
end
2026
end
2127

0 commit comments

Comments
 (0)