Fix mongoid deeply nested polimorphic
Got the commit from github. The roles and sub_roles save.
This commit is contained in:
		
							parent
							
								
									d27d7a623c
								
							
						
					
					
						commit
						4108ebf06d
					
				
							
								
								
									
										2
									
								
								Gemfile
								
								
								
								
							
							
						
						
									
										2
									
								
								Gemfile
								
								
								
								
							|  | @ -10,7 +10,7 @@ gem 'mini_magick' | |||
| gem 'rubyzip' | ||||
| gem 'sinatra' | ||||
| gem 'execjs' | ||||
| gem 'mongoid' | ||||
| gem 'mongoid', :git => 'git://github.com/mongoid/mongoid.git', :ref => '7a915395db50e2bc6071a503a11530e644879e49' | ||||
| 
 | ||||
| gem 'rake' | ||||
| gem 'jquery-rails' | ||||
|  |  | |||
							
								
								
									
										22
									
								
								Gemfile.lock
								
								
								
								
							
							
						
						
									
										22
									
								
								Gemfile.lock
								
								
								
								
							|  | @ -1,3 +1,13 @@ | |||
| GIT | ||||
|   remote: git://github.com/mongoid/mongoid.git | ||||
|   revision: 7a915395db50e2bc6071a503a11530e644879e49 | ||||
|   ref: 7a915395db50e2bc6071a503a11530e644879e49 | ||||
|   specs: | ||||
|     mongoid (2.4.0) | ||||
|       activemodel (~> 3.1) | ||||
|       mongo (~> 1.3) | ||||
|       tzinfo (~> 0.3.22) | ||||
| 
 | ||||
| GEM | ||||
|   remote: http://rubygems.org/ | ||||
|   specs: | ||||
|  | @ -32,7 +42,7 @@ GEM | |||
|     archive-tar-minitar (0.5.2) | ||||
|     arel (2.2.1) | ||||
|     bcrypt-ruby (3.0.1) | ||||
|     bson (1.5.1) | ||||
|     bson (1.5.2) | ||||
|     bson_ext (1.5.1) | ||||
|     builder (3.0.0) | ||||
|     carrierwave (0.5.4) | ||||
|  | @ -80,12 +90,8 @@ GEM | |||
|     mime-types (1.17.2) | ||||
|     mini_magick (3.3) | ||||
|       subexec (~> 0.1.0) | ||||
|     mongo (1.5.1) | ||||
|       bson (= 1.5.1) | ||||
|     mongoid (2.3.4) | ||||
|       activemodel (~> 3.1) | ||||
|       mongo (~> 1.3) | ||||
|       tzinfo (~> 0.3.22) | ||||
|     mongo (1.5.2) | ||||
|       bson (= 1.5.2) | ||||
|     multi_json (1.0.4) | ||||
|     orm_adapter (0.0.5) | ||||
|     polyglot (0.3.3) | ||||
|  | @ -190,7 +196,7 @@ DEPENDENCIES | |||
|   factory_girl_rails | ||||
|   jquery-rails | ||||
|   mini_magick | ||||
|   mongoid | ||||
|   mongoid! | ||||
|   rails | ||||
|   rake | ||||
|   rcov | ||||
|  |  | |||
|  | @ -2,12 +2,12 @@ $('.attributes_block a.delete').live('click', function(){ | |||
|   $(this).parents('.list_item').remove(); | ||||
| }); | ||||
| 
 | ||||
| $('#attributes a.remove_existing_record').live('click', function(){ | ||||
| $('.action a.remove_existing_record').live('click', function(){ | ||||
|   $(this).next('.should_destroy').attr('value', 1); | ||||
|   $("#attribute_" + $(this).prev().attr('value')).hide(); | ||||
| }); | ||||
| 
 | ||||
| $('#attributes_block a.switch').live('click', function(){ | ||||
| $('.action a.switch').live('click', function(){ | ||||
|   $(this).parent().toggleClass('disable'); | ||||
| 	var $am = $(this).next('.built_in_state') | ||||
| 	$am.attr('value', ($am.attr('value') == "false") ? "true" : "false"); | ||||
|  |  | |||
|  | @ -26,12 +26,14 @@ class Admin::RolesController < ApplicationController | |||
|   end | ||||
|    | ||||
|   def create | ||||
|     puts params.to_yaml | ||||
|     @attribute = Role.new(params[:role]) | ||||
|     @attribute.save | ||||
|     redirect_to :action => :index | ||||
|   end | ||||
|    | ||||
|   def update | ||||
|     puts params.to_yaml | ||||
|     @attribute = Role.find(params[:id]) | ||||
|     @attribute.update_attributes(params[:role]) | ||||
|     respond_to do |format| | ||||
|  |  | |||
|  | @ -9,7 +9,6 @@ class Attribute | |||
|    | ||||
|   has_many :attribute_fields, :autosave => true, :dependent => :destroy | ||||
|   has_one :i18n_variable, :as => :language_value, :autosave => true, :dependent => :destroy | ||||
|   accepts_nested_attributes_for :i18n_variable, :allow_destroy => true | ||||
|   accepts_nested_attributes_for :attribute_fields, :allow_destroy => true | ||||
|    | ||||
|   def is_built_in? | ||||
|  |  | |||
|  | @ -13,8 +13,8 @@ class AttributeField | |||
|   belongs_to :attribute | ||||
|   has_one :i18n_variable, :as => :language_value, :autosave => true, :dependent => :destroy | ||||
|   has_many :attribute_values | ||||
|    | ||||
|   validates_uniqueness_of :key | ||||
|   accepts_nested_attributes_for :i18n_variable, :allow_destroy => true | ||||
|    | ||||
|   # Convert the string list_options into an array | ||||
|   def select_list_options=(var) | ||||
|  |  | |||
|  | @ -3,11 +3,10 @@ | |||
|   <td class='select_mulitlingual' style='text-align:center'> | ||||
|     <%= f.check_box :locale %> | ||||
|   </td> | ||||
| 	<%= f.fields_for :i18n_variable, (attribute_field.i18n_variable.nil? ? attribute_field.build_i18n_variable : attribute_field.i18n_variable) do |f| %> | ||||
| 	<%= f.fields_for :i18n_variable, (attribute_field.new_record? ? attribute_field.build_i18n_variable : attribute_field.i18n_variable) do |f| %> | ||||
| 	  <% @site_valid_locales.each do |locale| %> | ||||
| 	    <td><%= f.text_field locale, :style => "width:130px" %></td> | ||||
| 	  <% end %> | ||||
| 		<%= f.hidden_field :id %> | ||||
| 	<% end %> | ||||
|   <td class='select_type'> | ||||
|     <%= f.select :markup, LIST[:markups], {}, {:style => "width:90px"} %> | ||||
|  |  | |||
|  | @ -13,11 +13,11 @@ | |||
| 			<tbody> | ||||
| 			<tr class="list_item"> | ||||
| 			    <td><%= is_new ? (f.text_field :key, {:style => "width:150px"}) : @attribute.key %></td> | ||||
| 			    <% @site_valid_locales.each do |locale| %> | ||||
| 			      <td> | ||||
| 			        <%= text_field_tag "#{@attribute_type}[i18n_variable][#{locale}]", (@i18n_variable[locale] if @i18n_variable), :style => "width:150px" %> | ||||
| 			      </td> | ||||
| 			    <% end %> | ||||
| 					<%= f.fields_for :i18n_variable, (@attribute.new_record? ? @attribute.build_i18n_variable : @attribute.i18n_variable) do |f| %> | ||||
| 					  <% @site_valid_locales.each do |locale| %> | ||||
| 					    <td><%= f.text_field locale, :style => "width:150px" %></td> | ||||
| 					  <% end %> | ||||
| 					<% end %> | ||||
| 			  </tr> | ||||
| 			</tbody> | ||||
| 		</table> | ||||
|  |  | |||
|  | @ -13,11 +13,11 @@ | |||
| 			<tbody> | ||||
| 			<tr class="list_item"> | ||||
| 			    <td><%= is_new ? (f.text_field :key, {:style => "width:150px"}) : @attribute.key %></td> | ||||
| 			    <% @site_valid_locales.each do |locale| %> | ||||
| 			      <td> | ||||
| 			        <%= text_field_tag "#{@attribute_type}[i18n_variable][#{locale}]", (@i18n_variable[locale] if @i18n_variable), :style => "width:150px" %> | ||||
| 			      </td> | ||||
| 			    <% end %> | ||||
| 					<%= f.fields_for :i18n_variable, (@attribute.new_record? ? @attribute.build_i18n_variable : @attribute.i18n_variable) do |f| %> | ||||
| 					  <% @site_valid_locales.each do |locale| %> | ||||
| 					    <td><%= f.text_field locale, :style => "width:150px" %></td> | ||||
| 					  <% end %> | ||||
| 					<% end %> | ||||
| 			  </tr> | ||||
| 			</tbody> | ||||
| 		</table> | ||||
|  | @ -26,8 +26,8 @@ | |||
| 
 | ||||
| <div id='sub_roles' class="attributes_block <%= @class %>"> | ||||
| 	<h2>Sub roles</h2> | ||||
| 		<% @attribute.sub_roles.each do |sub_role| %> | ||||
| 			<%= render :partial => 'form_sub', :object => sub_role, :locals => {:f => f} %> | ||||
| 		<% @attribute.sub_roles.each_with_index do |sub_role, i| %> | ||||
| 			<%= render :partial => 'form_sub', :object => sub_role, :locals => {:f => f, :i => i} %> | ||||
| 		<% end %>	 | ||||
| 	</div> | ||||
| </div> | ||||
|  | @ -38,12 +38,12 @@ | |||
| </div> | ||||
| 
 | ||||
| <% content_for :page_specific_javascript do %> | ||||
| 	<%= javascript_include_tag "attribute_form" %> | ||||
| 	<script> | ||||
| 		$('#add_sub_role a.add').live('click', function(){ | ||||
| 			var new_id = $(this).prev().attr('value'); | ||||
| 			var old_id = new RegExp("new_sub_roles", "g"); | ||||
| 			$(this).prev().attr('value', parseInt(new_id) + 1); | ||||
| 			$('#sub_role_temp_id').attr('value', new_id); | ||||
| 		  $('#sub_roles').append(("<%= escape_javascript(add_attribute 'admin/roles/sub_role', f, :sub_roles) %>").replace(old_id, new_id)); | ||||
| 		}); | ||||
| 	</script> | ||||
|  |  | |||
|  | @ -1,3 +1,3 @@ | |||
| <%= f.fields_for :sub_roles, form_sub do |f| %> | ||||
| 	<%= render :partial => 'sub_role', :object => form_sub, :locals => {:f => f} %> | ||||
| 	<%= render :partial => 'sub_role', :object => form_sub, :locals => {:f => f, :i => i} %> | ||||
| <% end %> | ||||
|  | @ -12,11 +12,11 @@ | |||
| 			<tbody> | ||||
| 			<tr class="list_item"> | ||||
| 			    <td><%= sub_role.new_record? ? (f.text_field :key, {:style => "width:150px"}) : sub_role.key %></td> | ||||
| 			    <% @site_valid_locales.each do |locale| %> | ||||
| 			      <td> | ||||
| 			        <%= f.text_field "i18n_variable[#{locale}]", :value => (@i18n_variable[locale] if @i18n_variable), :style => "width:150px" %> | ||||
| 			      </td> | ||||
| 			    <% end %> | ||||
| 					<%= f.fields_for :i18n_variable, (sub_role.new_record? ? sub_role.build_i18n_variable : sub_role.i18n_variable) do |f| %> | ||||
| 					  <% @site_valid_locales.each do |locale| %> | ||||
| 					    <td><%= f.text_field locale, :style => "width:150px" %></td> | ||||
| 					  <% end %> | ||||
| 					<% end %> | ||||
| 			  </tr> | ||||
| 			</tbody> | ||||
| 		</table> | ||||
|  | @ -37,10 +37,10 @@ | |||
| 					</thead> | ||||
| 					<tfoot> | ||||
| 						<tr> | ||||
| 							<td colspan="5"> | ||||
| 							<td id='add_attribute' colspan="5"> | ||||
| 								<%= hidden_field_tag 'attribute_field_count', sub_role.attribute_fields.count %> | ||||
| 								<a href="#" class="add"><%= t(:add) %></a> | ||||
| 								<%= hidden_field_tag 'sub_role_temp_id', 'new_sub_roles' %> | ||||
| 								<%= hidden_field_tag 'sub_role_temp_id', (i rescue 'new_sub_roles') %> | ||||
| 							</td> | ||||
| 						</tr> | ||||
| 					</tfoot> | ||||
|  | @ -55,16 +55,14 @@ | |||
| 	</div> | ||||
| 
 | ||||
| <% content_for :page_specific_javascript do %> | ||||
| 	<%= javascript_include_tag "attribute_form" %> | ||||
| 	<script> | ||||
| 		$('.attributes_block a.add').live('click', function(){ | ||||
| 		$('#add_attribute a.add').live('click', function(){ | ||||
| 			var new_parent_id = $(this).next().attr('value'); | ||||
| 			var old_parent_id = new RegExp("new_sub_roles", "g"); | ||||
| 			var new_id = $(this).prev().attr('value'); | ||||
| 			var old_id = new RegExp("new_attribute_fields", "g"); | ||||
| 			$(this).prev().attr('value', parseInt(new_id) + 1); | ||||
| 			$(this).next().attr('value', parseInt(new_parent_id) + 1); | ||||
| 	    $(this).parents('.sub_role_attributes').append(("<%= escape_javascript(add_attribute 'admin/attributes/attribute_field', f, :attribute_fields) %>").replace(old_id, new_id).replace(old_parent_id, new_parent_id)); | ||||
| 	    $(this).parents('table').append(("<%= escape_javascript(add_attribute 'admin/attributes/attribute_field', f, :attribute_fields) %>").replace(old_id, new_id).replace(old_parent_id, new_parent_id)); | ||||
| 		}); | ||||
| 	</script> | ||||
| <% end %> | ||||
| <% end unless !sub_role.new_record? %> | ||||
		Loading…
	
		Reference in New Issue