Sha256: e9d27fd8079e2b0b98036e31a78e31b279de3e38a52cd5b32af8d6e0cde9a320

Contents?: true

Size: 1.1 KB

Versions: 1

Compression:

Stored size: 1.1 KB

Contents

module RailsAdminUploader
  module Base
    extend ActiveSupport::Concern

    included do
      after_create :ra_build_links!
    end

    def ra_set_token!
      self.ra_token = RailsAdminUploader.guid if ra_token.blank?
    end

    def ra_build_links!
      return if ra_token.blank?
      self.class.ra_columns.each do |column|
        ref = self.class.ra_get_reflection(column)
        fk = ref.foreign_key
        ref.klass.where(ra_token: ra_token).each do |obj|
          obj.send("#{fk}=", id)
          obj.ra_token = nil
          obj.save!
        end
      end
      update_column('ra_token', nil)
    end

    module ClassMethods
      cattr_accessor :ra_columns

      def rails_admin_uploader(*columns)
        self.ra_columns = columns
      end

      def ra_get_reflection(column)
        self.reflections[column.to_s]
      end

      def ra_flags(column)
        ref = ra_get_reflection(column).klass
        obj = ref.new
        {
          nameable: obj.respond_to?(:name),
          sortable: obj.respond_to?(:sort),
          enableable: obj.respond_to?(:enabled)
        }
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rails_admin_uploader-1.0.0 lib/rails_admin_uploader/base.rb