module MailEngine::ActsAsMailReceiver::ClassMethods

Public Instance Methods

acts_as_mail_receiver(options) click to toggle source

NOTICE: Please put this code below any “scope” statement. Here you can define:

  1. Which columns can be acted as payload items.

  2. Which methods can be user group scopes.

Example

class User < AR
  acts_as_mail_receiver :payload_columns => %w{firstname lastname},
                        :groups => %w{all english_users chinese_users},
                        :skip_method_existance_check => true
end
# File lib/mail_engine/acts_as_mail_receiver.rb, line 27
def acts_as_mail_receiver(options)
  [:payload_columns, :groups].each do |key|
    methods_array = Array.wrap(options[key]) || []
    self.send("#{key}=", methods_array)
  end
  check_method_existance! unless options[:skip_method_existance_check]
end

Private Instance Methods

check_method_existance!() click to toggle source

Check if the methods is existed in the User model. If raise error.

# File lib/mail_engine/acts_as_mail_receiver.rb, line 39
def check_method_existance!
  return false if defined?(Rake) && Rake.application.top_level_tasks.include?("db:migrate")

  nonexist_groups = self.groups.select do |group|
    !self.methods.include?(group)
  end

  nonexist_payload_columns = self.payload_columns.select do |col|
    !self.instance_methods.include?(col) and !self.column_names.include?(col)
  end

  raise "Doesn't find group methods in #{self.name}:#{nonexist_groups.inspect}" if nonexist_groups.present?
  raise "Doesn't find payload column methods in #{self.name}:#{nonexist_payload_columns.inspect}" if nonexist_payload_columns.present?
end