module Collab::HasTrackedDocumentPositions
Public Instance Methods
has_tracked_document_position(pos_name, optional: true)
click to toggle source
Calls superclass method
# File lib/collab/has_tracked_document_positions.rb, line 6 def has_tracked_document_position(pos_name, optional: true) has_one pos_name.to_sym, -> { where(name: pos_name) }, class_name: ::Collab.config.tracked_position_model, as: :owner, dependent: :destroy, autosave: true validates pos_name.to_sym, presence: !optional define_method :"#{pos_name}=" do |pos| pos.name = pos_name super(pos) end end
has_tracked_document_selection(selection_name)
click to toggle source
# File lib/collab/has_tracked_document_positions.rb, line 16 def has_tracked_document_selection(selection_name) has_tracked_document_position :"#{selection_name}_anchor" has_tracked_document_position :"#{selection_name}_head" define_method selection_name do anchor = self.send(:"#{selection_name}_anchor") head = self.send(:"#{selection_name}_head") ::Collab::DocumentSelection.new anchor, head end define_method :"#{selection_name}=" do |sel| self.send(:"#{selection_name}_anchor=", sel&.anchor) self.send(:"#{selection_name}_head=", sel&.head) end end