Sha256: d5a95e3c30e09f6eb8aa72f77b2dc0f1a81fb0d7f992ffc24e2b8b76f55e7322

Contents?: true

Size: 1.42 KB

Versions: 8

Compression:

Stored size: 1.42 KB

Contents

module Challah
  class Signup
    extend ActiveModel::Naming
    include ActiveModel::Conversion

    attr_reader :errors
    attr_accessor :provider, :user

    def initialize(attributes = {})
      self.user = ::User.new
      self.provider = :password
      self.attributes = attributes
      @errors = []
    end

    def attributes=(value)
      return unless Hash === value

      value.each do |key, value|
        self.send("#{key}=", value)
      end
    end

    def method_missing(method, *attrs)
      user.send(method, *attrs)
    end

    def password=(value)
      @provider = :password unless value.to_s.blank?
      user.password = value
    end

    def valid_provider?
      user.valid_provider?(provider)
    end

    def provider=(value)
      if value.respond_to?(:to_sym)
        @provider = value.to_sym
      else
        @provider = nil
      end
    end

    def save
      if valid?
        user.save
      else
        false
      end
    end

    def valid?
      @errors = ActiveModel::Errors.new(user)

      result = true

      unless user.valid?
        result = false
        user.errors.each { |a, e| @errors.add(a, e) }
      end

      if !provider or !valid_provider?
        result = false
        user.errors.each { |a, e| @errors.add(a, e) unless @errors.added?(a, e) }
      end

      result
    end

    def self.model_name
      ActiveModel::Name.new(Challah::Signup, Challah, "Signup")
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
challah-1.0.0 lib/challah/signup.rb
challah-1.0.0.beta3 lib/challah/signup.rb
challah-1.0.0.beta2 lib/challah/signup.rb
challah-1.0.0.beta lib/challah/signup.rb
challah-0.9.1.beta.3 lib/challah/signup.rb
challah-0.9.1.beta.2 lib/challah/signup.rb
challah-0.9.1.beta lib/challah/signup.rb
challah-0.9.0 lib/challah/signup.rb