diff options
| author | Zog | 2018-02-26 09:58:16 +0100 |
|---|---|---|
| committer | Alban Peignier | 2018-03-14 15:03:03 +0100 |
| commit | 8baaa7947ea1e229f67149d221dea76450f040a5 (patch) | |
| tree | f70abb8951d0f682342452d66c2eca854c2651f6 /app/models/chouette | |
| parent | 1457744f19109a402f76b7d1aafcb1709e38f877 (diff) | |
| download | chouette-core-8baaa7947ea1e229f67149d221dea76450f040a5.tar.bz2 | |
Refs #5972 @1h; Automatic registration_number generation
Diffstat (limited to 'app/models/chouette')
| -rw-r--r-- | app/models/chouette/stop_area.rb | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/app/models/chouette/stop_area.rb b/app/models/chouette/stop_area.rb index f58f97eee..0a27b2f39 100644 --- a/app/models/chouette/stop_area.rb +++ b/app/models/chouette/stop_area.rb @@ -46,6 +46,11 @@ module Chouette validates_numericality_of :waiting_time, greater_than_or_equal_to: 0, only_integer: true, if: :waiting_time validate :parent_area_type_must_be_greater validate :area_type_of_right_kind + validate :registration_number_is_set + + before_validation do + self.registration_number ||= self.stop_area_referential.generate_registration_number + end def self.nullable_attributes [:registration_number, :street_name, :country_code, :fare_code, @@ -73,6 +78,22 @@ module Chouette end end + def registration_number_is_set + return unless self.stop_area_referential.registration_number_format.present? + if self.stop_area_referential.stop_areas.where(registration_number: self.registration_number).\ + where.not(id: self.id).exists? + errors.add(:registration_number, I18n.t('stop_areas.errors.registration_number.already_taken')) + end + + unless self.registration_number.present? + errors.add(:registration_number, I18n.t('stop_areas.errors.registration_number.cannot_be_empty')) + end + + unless self.stop_area_referential.validates_registration_number(self.registration_number) + errors.add(:registration_number, I18n.t('stop_areas.errors.registration_number.invalid')) + end + end + after_update :clean_invalid_access_links before_save :coordinates_to_lat_lng |
