Sha256: 6a8f03dd94d979d56ccb1e7c3aa61e495af7c9b3f87b06d895c6704dcc1d7fd2

Contents?: true

Size: 675 Bytes

Versions: 6

Compression:

Stored size: 675 Bytes

Contents

# -*- encoding : utf-8 -*-
module RademadeAdmin
  class Linker

    def initialize(model_info, item, relation)
      @model_info = model_info
      @item = item
      @related_data_item = model_info.data_items.data_item(relation)
    end

    def link(id)
      process_link { |old_data| old_data << @related_data_item.relation.related_entities(id) }
    end

    def unlink(id)
      process_link { |old_data| old_data - [@related_data_item.relation.related_entities(id)] }
    end

    private

    def process_link
      old_data = @item.send(@related_data_item.getter).to_a
      @item.send(@related_data_item.setter, yield(old_data))
      @item.save
    end

  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
rademade_admin-0.1.5 app/services/linker.rb
rademade_admin-0.1.4 app/services/linker.rb
rademade_admin-0.1.3 app/services/linker.rb
rademade_admin-0.1.2 app/services/linker.rb
rademade_admin-0.1.1 app/services/linker.rb
rademade_admin-0.1.0 app/services/linker.rb