Rename column ContactNetwork#nickname to #codename
This commit is contained in:
parent
e6e979041a
commit
cc9c846cc9
|
@ -1,7 +1,7 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class ContactNetwork < ApplicationRecord
|
||||
NICKNAME_RE = /\A[a-z][a-z0-9]*(_[a-z0-9]+)*\z/.freeze
|
||||
CODENAME_RE = /\A[a-z][a-z0-9]*(_[a-z0-9]+)*\z/.freeze
|
||||
|
||||
#############
|
||||
# Callbacks #
|
||||
|
@ -14,10 +14,10 @@ class ContactNetwork < ApplicationRecord
|
|||
# Validations #
|
||||
###############
|
||||
|
||||
validates :nickname,
|
||||
validates :codename,
|
||||
presence: true,
|
||||
length: { in: 3..36 },
|
||||
format: NICKNAME_RE,
|
||||
format: CODENAME_RE,
|
||||
uniqueness: { case_sensitive: false }
|
||||
|
||||
validates :public_name, allow_nil: true, length: { in: 1..255 }
|
||||
|
@ -25,12 +25,12 @@ class ContactNetwork < ApplicationRecord
|
|||
private
|
||||
|
||||
def turn_blanks_into_nils
|
||||
self.nickname = nil if nickname.blank?
|
||||
self.codename = nil if codename.blank?
|
||||
self.public_name = nil if public_name.blank?
|
||||
end
|
||||
|
||||
def strip_extra_spaces
|
||||
self.nickname = nickname&.strip
|
||||
self.codename = codename&.strip
|
||||
self.public_name = public_name&.strip
|
||||
end
|
||||
end
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<thead>
|
||||
<tr>
|
||||
<th scope="col">
|
||||
<%= ContactNetwork.human_attribute_name :nickname %>
|
||||
<%= ContactNetwork.human_attribute_name :codename %>
|
||||
</th>
|
||||
<th scope="col">
|
||||
<%= ContactNetwork.human_attribute_name :public_name %>
|
||||
|
@ -20,7 +20,7 @@
|
|||
<tbody>
|
||||
<% @contact_networks.each do |contact_network| %>
|
||||
<tr>
|
||||
<td scope="row"><%= contact_network.nickname %></td>
|
||||
<td scope="row"><%= contact_network.codename %></td>
|
||||
<td><%= contact_network.public_name %></td>
|
||||
</tr>
|
||||
<% end %>
|
||||
|
|
|
@ -38,7 +38,7 @@ en:
|
|||
person: Person
|
||||
contact_network:
|
||||
id: ID
|
||||
nickname: Nickname
|
||||
codename: Codename
|
||||
public_name: Public name
|
||||
federal_subject:
|
||||
id: ID
|
||||
|
|
|
@ -38,7 +38,7 @@ ru:
|
|||
person: Человек
|
||||
contact_network:
|
||||
id: ID
|
||||
nickname: Имя пользователя
|
||||
codename: Кодовое имя
|
||||
public_name: Публичное имя
|
||||
federal_subject:
|
||||
id: ID
|
||||
|
|
|
@ -59,6 +59,15 @@ private
|
|||
$$;
|
||||
SQL
|
||||
|
||||
func :is_codename, <<~SQL
|
||||
(str text) RETURNS boolean IMMUTABLE LANGUAGE plpgsql AS
|
||||
$$
|
||||
BEGIN
|
||||
RETURN is_nickname(str);
|
||||
END;
|
||||
$$;
|
||||
SQL
|
||||
|
||||
func :is_good_text, <<~SQL
|
||||
(str text) RETURNS boolean IMMUTABLE LANGUAGE plpgsql AS
|
||||
$$
|
||||
|
@ -161,7 +170,7 @@ private
|
|||
create_table :contact_networks do |t|
|
||||
t.timestamps null: false
|
||||
|
||||
t.string :nickname, null: false, index: { unique: true }
|
||||
t.string :codename, null: false, index: { unique: true }
|
||||
t.string :public_name, null: false, index: { unique: true }
|
||||
end
|
||||
|
||||
|
@ -384,8 +393,8 @@ private
|
|||
is_good_small_text(value)
|
||||
SQL
|
||||
|
||||
constraint :contact_networks, :nickname, <<~SQL
|
||||
is_nickname(nickname)
|
||||
constraint :contact_networks, :codename, <<~SQL
|
||||
is_codename(codename)
|
||||
SQL
|
||||
|
||||
constraint :contact_networks, :public_name, <<~SQL
|
||||
|
|
|
@ -28,13 +28,13 @@ end
|
|||
CSV.foreach(
|
||||
contact_networks_filename,
|
||||
col_sep: '|',
|
||||
) do |(id, nickname, public_name)|
|
||||
) do |(id, codename, public_name)|
|
||||
id = Integer(id.strip)
|
||||
nickname.strip!
|
||||
codename.strip!
|
||||
public_name.strip!
|
||||
|
||||
ContactNetwork.where(id: id).first_or_create! do |new_contact_network|
|
||||
new_contact_network.nickname = nickname
|
||||
new_contact_network.codename = codename
|
||||
new_contact_network.public_name = public_name
|
||||
end
|
||||
end
|
||||
|
|
|
@ -161,6 +161,19 @@ END;
|
|||
$$;
|
||||
|
||||
|
||||
--
|
||||
-- Name: is_codename(text); Type: FUNCTION; Schema: public; Owner: -
|
||||
--
|
||||
|
||||
CREATE FUNCTION public.is_codename(str text) RETURNS boolean
|
||||
LANGUAGE plpgsql IMMUTABLE
|
||||
AS $$
|
||||
BEGIN
|
||||
RETURN is_nickname(str);
|
||||
END;
|
||||
$$;
|
||||
|
||||
|
||||
--
|
||||
-- Name: is_good_big_text(text); Type: FUNCTION; Schema: public; Owner: -
|
||||
--
|
||||
|
@ -403,9 +416,9 @@ CREATE TABLE public.contact_networks (
|
|||
id bigint NOT NULL,
|
||||
created_at timestamp(6) without time zone NOT NULL,
|
||||
updated_at timestamp(6) without time zone NOT NULL,
|
||||
nickname character varying NOT NULL,
|
||||
codename character varying NOT NULL,
|
||||
public_name character varying NOT NULL,
|
||||
CONSTRAINT nickname CHECK (public.is_nickname((nickname)::text)),
|
||||
CONSTRAINT codename CHECK (public.is_codename((codename)::text)),
|
||||
CONSTRAINT public_name CHECK (public.is_good_small_text((public_name)::text))
|
||||
);
|
||||
|
||||
|
@ -1085,10 +1098,10 @@ CREATE UNIQUE INDEX index_active_storage_blobs_on_key ON public.active_storage_b
|
|||
|
||||
|
||||
--
|
||||
-- Name: index_contact_networks_on_nickname; Type: INDEX; Schema: public; Owner: -
|
||||
-- Name: index_contact_networks_on_codename; Type: INDEX; Schema: public; Owner: -
|
||||
--
|
||||
|
||||
CREATE UNIQUE INDEX index_contact_networks_on_nickname ON public.contact_networks USING btree (nickname);
|
||||
CREATE UNIQUE INDEX index_contact_networks_on_codename ON public.contact_networks USING btree (codename);
|
||||
|
||||
|
||||
--
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
FactoryBot.define do
|
||||
factory :contact_network, class: ContactNetwork do
|
||||
nickname { Faker::Internet.username 3..36, %w[_] }
|
||||
codename { Faker::Internet.username 3..36, %w[_] }
|
||||
public_name { Faker::Company.unique.name }
|
||||
end
|
||||
end
|
||||
|
|
|
@ -5,18 +5,18 @@ require 'rails_helper'
|
|||
RSpec.describe ContactNetwork do
|
||||
subject { create :contact_network }
|
||||
|
||||
describe '#nickname' do
|
||||
describe '#codename' do
|
||||
def allow_value(*)
|
||||
super.for :nickname
|
||||
super.for :codename
|
||||
end
|
||||
|
||||
it { is_expected.to validate_presence_of :nickname }
|
||||
it { is_expected.to validate_presence_of :codename }
|
||||
|
||||
it do
|
||||
is_expected.to validate_length_of(:nickname).is_at_least(3).is_at_most(36)
|
||||
is_expected.to validate_length_of(:codename).is_at_least(3).is_at_most(36)
|
||||
end
|
||||
|
||||
it { is_expected.to validate_uniqueness_of(:nickname).case_insensitive }
|
||||
it { is_expected.to validate_uniqueness_of(:codename).case_insensitive }
|
||||
|
||||
it { is_expected.not_to allow_value nil }
|
||||
it { is_expected.not_to allow_value '' }
|
||||
|
|
Reference in New Issue