Sha256: 4bcbc0f0f9fef5162bff9a1c537e5e54a6c81849527c49cbfb3230adae86e30a

Contents?: true

Size: 1.23 KB

Versions: 5

Compression:

Stored size: 1.23 KB

Contents

module Mailkick
  module Model

    def mailkick_user(options = {})
      email_key = options[:email_key] || :email
      class_eval do
        scope :opted_out, proc {|options = {}|
          binds = [self.class.name, true]
          if options[:list]
            query = "(mailkick_opt_outs.list IS NULL OR mailkick_opt_outs.list = ?)"
            binds << options[:list]
          else
            query = "mailkick_opt_outs.list IS NULL"
          end
          where("#{options[:not] ? "NOT " : ""}EXISTS(SELECT * FROM mailkick_opt_outs WHERE (#{table_name}.#{email_key} = mailkick_opt_outs.email OR (#{table_name}.#{primary_key} = mailkick_opt_outs.user_id AND mailkick_opt_outs.user_type = ?)) AND mailkick_opt_outs.active = ? AND #{query})", *binds)
        }
        scope :not_opted_out, proc {|options = {}|
          opted_out(options.merge(not: true))
        }

        def opted_out?(options = {})
          Mailkick.opted_out?({email: email, user: self}.merge(options))
        end

        def opt_out(options = {})
          Mailkick.opt_out({email: email, user: self}.merge(options))
        end

        def opt_in(options = {})
          Mailkick.opt_in({email: email, user: self}.merge(options))
        end

      end
    end

  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
mailkick-0.1.1 lib/mailkick/model.rb
mailkick-0.1.0 lib/mailkick/model.rb
mailkick-0.0.6 lib/mailkick/model.rb
mailkick-0.0.5 lib/mailkick/model.rb
mailkick-0.0.4 lib/mailkick/model.rb