module Slices::HasSlices
Public Instance Methods
embeded_slices() { |embed_name| ... }
click to toggle source
# File lib/slices/has_slices.rb, line 82 def embeded_slices(&block) self.class.slice_embeds.each do |embed_name| yield(embed_name) end end
messages_from_errors(errors)
click to toggle source
# File lib/slices/has_slices.rb, line 88 def messages_from_errors(errors) if errors.respond_to?(:messages) errors.messages else errors end end
ordered_slices_for(embed_name=nil)
click to toggle source
# File lib/slices/has_slices.rb, line 58 def ordered_slices_for(embed_name=nil) embed_name = self.class.slice_embeds.first if embed_name.nil? send("ordered_#{embed_name}") end
slice_errors_for(embed_name)
click to toggle source
# File lib/slices/has_slices.rb, line 72 def slice_errors_for(embed_name) Hash.new.tap do |message| slices_for(embed_name).each do |slice| if ! slice.valid? && ! slice.to_delete? message[slice.id_or_client_id] = messages_from_errors(slice.errors) end end end end
slices_for(embed_name)
click to toggle source
# File lib/slices/has_slices.rb, line 54 def slices_for(embed_name) send(embed_name) end
update_attributes(attributes)
click to toggle source
Calls superclass method
# File lib/slices/has_slices.rb, line 31 def update_attributes(attributes) [:slices, :set_slices].each do |embed_name| next if attributes[embed_name].nil? attributes[embed_name] = attributes[embed_name].map { |slice_attributes| slice_attributes = slice_attributes.symbolize_keys next if slice_attributes[:_destroy] slice_attributes.delete :_new if slice_attributes[:id].present? slice = slices_for(embed_name).find(slice_attributes[:id]) slice.write_attributes(slice_attributes) else class_name = slice_attributes[:type].to_s.camelize + 'Slice' slice = class_name.constantize.new(slice_attributes) end slice }.compact end super end
validate_slices()
click to toggle source
# File lib/slices/has_slices.rb, line 63 def validate_slices embeded_slices do |embed_name| _slice_errors = slice_errors_for(embed_name) if _slice_errors.any? errors.add(embed_name, _slice_errors) end end end