From 89092ca98ba6d1d692871db3e4b46f31dc9336ed Mon Sep 17 00:00:00 2001
From: Alban Peignier
Date: Thu, 5 May 2016 15:12:50 +0200
Subject: Use RuleParameterSet.validable_object_names instead of
 RuleParameterSet.validable_objects in views. Refs #829
---
 app/models/rule_parameter_set.rb                      | 12 ++++++++++++
 app/views/rule_parameter_sets/_column_fields.html.erb |  6 +++---
 app/views/rule_parameter_sets/_form.html.erb          | 10 +++++-----
 app/views/rule_parameter_sets/show.html.erb           | 18 +++++++++---------
 4 files changed, 29 insertions(+), 17 deletions(-)
diff --git a/app/models/rule_parameter_set.rb b/app/models/rule_parameter_set.rb
index 1a32bbae2..ba13b6d27 100644
--- a/app/models/rule_parameter_set.rb
+++ b/app/models/rule_parameter_set.rb
@@ -48,6 +48,18 @@ class RuleParameterSet < ActiveRecord::Base
         'vehicle_journey' => ['objectid','published_journey_name','published_journey_identifier','number'] }
   end
 
+  @@objects_by_name = Hash[[validable_object_names, validable_objects].transpose].freeze
+
+  def self.validable_object_class(object_name)
+    @@objects_by_name[object_name]
+  end
+
+  def self.validable_column_type(object_name, column)
+    if object_class = validable_object_class(object_name)
+      object_class.columns_hash[column].try(:type)
+    end
+  end
+
   def self.column_attribute_prefixes
     %w( unique pattern min_size max_size )
   end
diff --git a/app/views/rule_parameter_sets/_column_fields.html.erb b/app/views/rule_parameter_sets/_column_fields.html.erb
index abb2af4a8..0a9c70f96 100644
--- a/app/views/rule_parameter_sets/_column_fields.html.erb
+++ b/app/views/rule_parameter_sets/_column_fields.html.erb
@@ -1,8 +1,8 @@
   
 
-  <%= t("activerecord.attributes.#{obj.table_name.singularize}.#{column}") %> 
-  <% suffix = "column_#{column}_object_#{obj.table_name.singularize}"%>
+  <%= t("activerecord.attributes.#{object_name}.#{column}") %> 
+  <% suffix = "column_#{column}_object_#{object_name}"%>
    <%= f.check_box "unique_#{suffix}".to_sym, :class => "special" %> 
-  <% if obj.columns_hash[column].type == :string %>
+  <% if RuleParameterSet.validable_column_type(object_name, column) == :string %>
     <%=  f.select "pattern_#{suffix}".to_sym, options_for_select([[t("rule_parameter_sets.labels.free_char"), "0"], [t("rule_parameter_sets.labels.num_char"), "1"], [t("rule_parameter_sets.labels.alpha_char"), "2"], [t("rule_parameter_sets.labels.upper_char"), "3"], [t("rule_parameter_sets.labels.lower_char"), "4"]]) %> 
   <% else %>
     <%= t "rule_parameter_sets.labels.num_char" %> 
diff --git a/app/views/rule_parameter_sets/_form.html.erb b/app/views/rule_parameter_sets/_form.html.erb
index a2d1c2bc1..95316a42f 100644
--- a/app/views/rule_parameter_sets/_form.html.erb
+++ b/app/views/rule_parameter_sets/_form.html.erb
@@ -46,10 +46,10 @@
 
     <%= t("rule_parameter_sets.labels.columns_restrictions") %>
     
-    <% RuleParameterSet.validable_objects.each do |obj| %>
+    <% RuleParameterSet.validable_object_names.each do |object_name| %>
       
       
-          <%= form.check_box "check_#{obj.table_name.singularize}".to_sym, :class => "special" %> <%= t("activerecord.models.#{obj.table_name.singularize}.one") %> 
+        <%= form.check_box "check_#{object_name}".to_sym, :class => "special" %> <%= t("activerecord.models.#{object_name}.one") %> 
     		<%= RuleParameterSet.human_attribute_name("attribute") %> 
     		<%= RuleParameterSet.human_attribute_name("unique") %> 
     		<%= RuleParameterSet.human_attribute_name("string_type") %> 
@@ -58,9 +58,9 @@
        
        
       
-      <% RuleParameterSet.validable_columns[obj.table_name.singularize].each do |col| %>
-        ">
-        <%= render :partial => "column_fields", :locals => { :f => form, :obj => obj, :column => col} %>
+      <% RuleParameterSet.validable_columns[object_name].each do |col| %>
+         ">
+        <%= render :partial => "column_fields", :locals => { :f => form, :object_name => object_name, :column => col} %>
          
       <% end %>
        
diff --git a/app/views/rule_parameter_sets/show.html.erb b/app/views/rule_parameter_sets/show.html.erb
index 335e0ae33..626fb295c 100644
--- a/app/views/rule_parameter_sets/show.html.erb
+++ b/app/views/rule_parameter_sets/show.html.erb
@@ -108,13 +108,13 @@
             <% end %>
 	  <% end %>
       
-      
+
       <% Chouette::Line.transport_modes.map(&:to_s).each do |mode| %>
       <% if @rule_parameter_set.allowed(mode) %>
       
   	<%= t("transport_modes.label.#{mode}") %> 
   	<% RuleParameterSet.mode_attribute_prefixes.each do |prefix| %>
-	
+
     	<% unless prefix == "allowed_transport" %>
     	<%= @rule_parameter_set.send  "#{prefix}_mode_#{mode}" %> 
     	<% end %>
@@ -127,11 +127,11 @@
     
     <%= t("rule_parameter_sets.labels.columns_restrictions") %>   
     
-    <% RuleParameterSet.validable_objects.each do |obj| %>
-    <% if @rule_parameter_set.selected(obj.table_name.singularize) %>
+    <% RuleParameterSet.validable_object_names.each do |object_name| %>
+    <% if @rule_parameter_set.selected(object_name) %>
       
       
-             <%= t("activerecord.models.#{obj.table_name.singularize}.one") %> 
+             <%= t("activerecord.models.#{object_name}.one") %> 
     		<%= RuleParameterSet.human_attribute_name("attribute") %> 
     		<%= RuleParameterSet.human_attribute_name("unique") %> 
     		<%= RuleParameterSet.human_attribute_name("string_type") %> 
@@ -140,12 +140,12 @@
        
        
       
-      <% RuleParameterSet.validable_columns[obj.table_name.singularize].each do |col| %>
-      <% if @rule_parameter_set.selected_column(obj.table_name.singularize,col)%>
+      <% RuleParameterSet.validable_columns[object_name].each do |col| %>
+      <% if @rule_parameter_set.selected_column(object_name,col)%>
         
 		   
-		  <%= t("activerecord.attributes.#{obj.table_name.singularize}.#{col}") %> 
-		  <% suffix = "column_#{col}_object_#{obj.table_name.singularize}"%>
+		  <%= t("activerecord.attributes.#{object_name}.#{col}") %> 
+		  <% suffix = "column_#{col}_object_#{object_name}"%>
 		  <%= unique(@rule_parameter_set.send  "unique_#{suffix}".to_sym) %> 
 		  <%= pattern(@rule_parameter_set.send  "pattern_#{suffix}".to_sym) %> 
 		  <%= @rule_parameter_set.send  "min_size_#{suffix}".to_sym %> 
-- 
cgit v1.2.3