Sha256: 09da3dc43eb8e1d2092130533c1a66854f5bf759cb31bf17815d69a976161e2e

Contents?: true

Size: 988 Bytes

Versions: 6

Compression:

Stored size: 988 Bytes

Contents

require_relative 'commontable_config'
require_relative 'build_thread'

module Commontator::ActsAsCommontable
  def self.included(base)
    base.class_attribute :is_commontable
    base.is_commontable = false
    base.extend(ClassMethods)
  end

  module ClassMethods
    def acts_as_commontable(options = {})
      class_exec do
        association_options = options.extract!(:dependent)
        association_options[:dependent] ||= :nullify

        cattr_accessor :commontable_config
        self.commontable_config = Commontator::CommontableConfig.new(options)

        has_one :commontator_thread, association_options.merge(
          as: :commontable, class_name: 'Commontator::Thread'
        )

        validates :commontator_thread, presence: true

        prepend Commontator::BuildThread

        self.is_commontable = true
      end
    end

    alias_method :acts_as_commentable, :acts_as_commontable
  end
end

ActiveRecord::Base.send :include, Commontator::ActsAsCommontable

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
commontator-6.1.1 lib/commontator/acts_as_commontable.rb
commontator-6.1.0 lib/commontator/acts_as_commontable.rb
commontator-6.0.1 lib/commontator/acts_as_commontable.rb
commontator-6.0.0 lib/commontator/acts_as_commontable.rb
commontator-6.0.0.pre.2 lib/commontator/acts_as_commontable.rb
commontator-6.0.0.pre.1 lib/commontator/acts_as_commontable.rb