Sha256: ae050aba5f925a88d14067c1ee645a2549c2dcd8c3df35d9d8a22fb9f3eb2814

Contents?: true

Size: 1.42 KB

Versions: 26

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 = Challah.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

26 entries across 26 versions & 1 rubygems

Version Path
challah-1.6.1 lib/challah/signup.rb
challah-1.6.0 lib/challah/signup.rb
challah-1.5.0 lib/challah/signup.rb
challah-1.4.2 lib/challah/signup.rb
challah-1.4.1 lib/challah/signup.rb
challah-1.4.0 lib/challah/signup.rb
challah-1.3.3 lib/challah/signup.rb
challah-1.3.2 lib/challah/signup.rb
challah-1.3.1 lib/challah/signup.rb
challah-1.3.0 lib/challah/signup.rb
challah-1.2.11 lib/challah/signup.rb
challah-1.2.10 lib/challah/signup.rb
challah-1.2.9 lib/challah/signup.rb
challah-1.2.8 lib/challah/signup.rb
challah-1.2.7 lib/challah/signup.rb
challah-1.2.6 lib/challah/signup.rb
challah-1.2.5 lib/challah/signup.rb
challah-1.2.5.pre lib/challah/signup.rb
challah-1.2.4 lib/challah/signup.rb
challah-1.2.3 lib/challah/signup.rb