module UserNotifier::NotificationSource::ClassMethods

Private Instance Methods

create_notification_class() click to toggle source
# File lib/user_notifier/models/has_notifications.rb, line 30
def create_notification_class
  base_class_name = notification_class_name.demodulize
  unless self.parent.const_defined?(notification_class_name)
    klass = Class.new UserNotifier::Base do
      self.table_name = base_class_name.tableize
    end
    self.parent.const_set base_class_name, klass

    source_name = self.table_name.singularize
    if self.model_name.to_s.downcase != UserNotifier.user_class_name.downcase
      klass.belongs_to source_name.to_sym, inverse_of: :notifications
    end
    klass.belongs_to :source, class_name: self.model_name.to_s, foreign_key: "#{source_name}_id", inverse_of: :notifications
  end
end
notification_class_name() click to toggle source
# File lib/user_notifier/models/has_notifications.rb, line 26
def notification_class_name
  "#{self.model_name}Notification"
end
set_association() click to toggle source
# File lib/user_notifier/models/has_notifications.rb, line 21
def set_association
  create_notification_class
  self.has_many :notifications, class_name: notification_class_name, dependent: :destroy
end