aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjpl2016-11-21 10:57:47 +0100
committerjpl2016-11-21 10:57:47 +0100
commitc37cf90763932254cc622e3379b9364788333207 (patch)
tree63de4dbad6b53a1eb04a64ce1f42d32054f5f175
parentc64a5dddc00a6431c17c75ce278ca0d1f1199b96 (diff)
downloadchouette-core-c37cf90763932254cc622e3379b9364788333207.tar.bz2
Avoid errors when ReferentialMetadata dates are invalid, or periods nil. Refs #1782
-rw-r--r--app/models/referential.rb2
-rw-r--r--app/models/referential_metadata.rb6
2 files changed, 5 insertions, 3 deletions
diff --git a/app/models/referential.rb b/app/models/referential.rb
index 300ff3239..bac8b09fa 100644
--- a/app/models/referential.rb
+++ b/app/models/referential.rb
@@ -220,7 +220,7 @@ class Referential < ActiveRecord::Base
return [] unless metadatas.present?
line_ids = metadatas.first.line_ids
- period = metadatas.first.periodes.first
+ period = metadatas.first.periodes.try :first
return [] unless line_ids.present? && period
diff --git a/app/models/referential_metadata.rb b/app/models/referential_metadata.rb
index 5867ef0cf..a1066e43b 100644
--- a/app/models/referential_metadata.rb
+++ b/app/models/referential_metadata.rb
@@ -7,6 +7,8 @@ class ReferentialMetadata < ActiveRecord::Base
validates :lines, presence: true
validates :periodes, presence: true
+ validates :first_period_begin, :first_period_end, presence: true
+
scope :include_lines, -> (line_ids) { where('line_ids && ARRAY[?]', line_ids) }
scope :include_dateranges, -> (dateranges) { where('periodes && ARRAY[?]', dateranges) }
@@ -18,7 +20,7 @@ class ReferentialMetadata < ActiveRecord::Base
@first_period_begin or first_period.try(:begin)
end
def first_period_begin=(date)
- date = Date.parse(date) if String === date
+ date = (Date.parse(date) rescue nil) if String === date
periodes_will_change! unless @first_period_begin == date
@first_period_begin = date
end
@@ -34,7 +36,7 @@ class ReferentialMetadata < ActiveRecord::Base
end
end
def first_period_end=(date)
- date = Date.parse(date) if String === date
+ date = (Date.parse(date) rescue nil) if String === date
periodes_will_change! unless @first_period_end == date
@first_period_end = date
end