1
0
Fork 0
This repository has been archived on 2023-03-27. You can view files and clone it, but cannot push or open issues or pull requests.
lpr-partynest/app/models/federal_subject.rb

76 lines
1.6 KiB
Ruby
Raw Permalink Normal View History

2018-11-30 11:24:05 -05:00
# frozen_string_literal: true
2019-06-23 11:54:41 -04:00
class FederalSubject < ApplicationRecord
##########
# Scopes #
##########
scope :order_by_display_name, lambda { |dir = :asc|
if I18n.locale == :ru
order(native_name: dir)
else
order(english_name: dir)
end
}
2019-03-25 20:56:31 -04:00
###############
# Validations #
###############
2019-09-30 08:34:27 -04:00
validates :english_name, good_small_text: true, uniqueness: true
2019-03-24 17:10:10 -04:00
2019-09-30 08:34:27 -04:00
validates :native_name, good_small_text: true, uniqueness: true
2019-03-24 17:37:36 -04:00
2019-09-30 08:34:27 -04:00
validates :centre, good_small_text: true
2019-07-22 05:14:14 -04:00
2019-07-19 18:52:14 -04:00
validates :number,
presence: true,
uniqueness: true,
numericality: { only_integer: true, greater_than: 0 }
2019-09-30 07:30:19 -04:00
validates :timezone, timezone: true
2019-07-19 22:40:56 -04:00
validate :english_name_looks_realistic
validate :native_name_looks_realistic
2019-07-22 05:14:14 -04:00
validate :centre_looks_realistic
2019-03-25 20:56:31 -04:00
###########
# Methods #
###########
2019-07-22 06:39:32 -04:00
def to_param
number&.to_s
end
2019-03-24 17:37:36 -04:00
def display_name
2019-07-18 15:43:12 -04:00
if I18n.locale == :ru
native_name
else
english_name
end
2019-03-24 17:37:36 -04:00
end
private
def english_name_looks_realistic
return if english_name.blank?
2019-08-23 22:32:37 -04:00
errors.add :english_name, :leading_spaces if english_name.match?(/\A\s+/)
errors.add :english_name, :trailing_spaces if english_name.match?(/\s+\z/)
end
def native_name_looks_realistic
return if native_name.blank?
2019-08-23 22:32:37 -04:00
errors.add :native_name, :leading_spaces if native_name.match?(/\A\s+/)
errors.add :native_name, :trailing_spaces if native_name.match?(/\s+\z/)
end
2019-07-22 05:14:14 -04:00
def centre_looks_realistic
return if centre.blank?
2019-08-23 22:32:37 -04:00
errors.add :centre, :leading_spaces if centre.match?(/\A\s+/)
errors.add :centre, :trailing_spaces if centre.match?(/\s+\z/)
2019-07-22 05:14:14 -04:00
end
2018-11-30 11:24:05 -05:00
end