Sha256: b281e368871bb1a4f7ae1ff9fdf4711fe849f3fe3e2f9e59aeeb20ec0a91e405
Contents?: true
Size: 1.33 KB
Versions: 2
Compression:
Stored size: 1.33 KB
Contents
module Binda class Repeater < ApplicationRecord include FieldableAssociations # Associations belongs_to :fieldable, polymorphic: true belongs_to :field_setting validates :fieldable_id, presence: true validates :fieldable_type, presence: true # The following direct association is used to securely delete associated fields # Infact via `fieldable` the associated fields might not be deleted # as the fieldable_id is related to the `component` rather than the `field_setting` after_create :set_default_position # Set default position after create # # This methods ensure that every repeater instance has an explicit position. # The latest repeater created gets the highest position number. # The first position is 1 (not 0). # # @return [object] Repeater instance def set_default_position # apparently `self.fieldable != self.fieldable_type.constantize.find( self.fieldable_id )` # as the former has always one repeater, the latter has all repeaters created so far # that's way we use the longer version instance = self.fieldable_type.constantize.find( self.fieldable_id ) position = instance.repeaters.find_all{ |r| r.field_setting_id == self.field_setting.id }.length self.update_attribute 'position', position end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
binda-0.1.5 | app/models/binda/repeater.rb |
binda-0.1.4 | app/models/binda/repeater.rb |