aboutsummaryrefslogtreecommitdiffstats
path: root/app/models/referential.rb
diff options
context:
space:
mode:
authorXinhui2017-03-06 11:41:36 +0100
committerXinhui2017-03-06 11:41:36 +0100
commit156133d5bdbc05fd283f50396f776b43e49e5249 (patch)
treec821022ee0792eb7cdf91ba5ac93cf21d69e28a4 /app/models/referential.rb
parentb74d373bc477fd60b083fa9a5b79b346cd9d07de (diff)
downloadchouette-core-156133d5bdbc05fd283f50396f776b43e49e5249.tar.bz2
Fix workbench#show filter referential by periode range
Refs #2665
Diffstat (limited to 'app/models/referential.rb')
-rw-r--r--app/models/referential.rb8
1 files changed, 8 insertions, 0 deletions
diff --git a/app/models/referential.rb b/app/models/referential.rb
index dbc7b76e7..85d581c33 100644
--- a/app/models/referential.rb
+++ b/app/models/referential.rb
@@ -43,6 +43,7 @@ class Referential < ActiveRecord::Base
belongs_to :workbench
scope :ready, -> { where(ready: true) }
+ scope :in_periode, ->(periode) { where(id: referential_ids_in_periode(periode)) }
def lines
if metadatas.blank?
@@ -229,6 +230,13 @@ class Referential < ActiveRecord::Base
end
end
+ def self.referential_ids_in_periode(range)
+ subquery = "SELECT DISTINCT(public.referential_metadata.referential_id) FROM public.referential_metadata, LATERAL unnest(periodes) period "
+ subquery << "WHERE period && '#{ActiveRecord::ConnectionAdapters::PostgreSQLColumn.range_to_string(range)}'"
+ query = "SELECT * FROM public.referentials WHERE referentials.id IN (#{subquery})"
+ self.connection.select_values(query).map(&:to_i)
+ end
+
def overlapped_referential_ids
return [] unless metadatas.present?