Sha256: bd5526f1bf0742d156b689ff5f14485f5b3b1ba60af9f1d99364551c3a690ca7

Contents?: true

Size: 953 Bytes

Versions: 4

Compression:

Stored size: 953 Bytes

Contents

module HasCredentialModelHelper 
  
  %w(email_address password password_hash login_enabled).each do |accessor|
    define_method accessor.to_sym do      
      credential.send accessor.to_sym if credential
    end
    
    setter_method = "#{accessor}=".to_sym
    
    define_method setter_method do |val|
      build_credential unless credential

      credential.send setter_method, val
    end
  end

  def credential_after_save
    credential.save! if credential.changed?
  end

  def validate_credential_fields
    credential.errors.each{|attr,msg| errors.add attr, msg } unless credential.valid?
    validate_without_credentials
  end

  def self.append_features(base)
    super

    base.class_eval do
      has_one :credential, :as => :user, :dependent => :destroy
      
      after_save :credential_after_save
      
      
      alias validate_without_credentials validate
      alias validate validate_credential_fields
    end
  end  
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
brisk-bills-0.8.2 app/helpers/has_credential_model_helper.rb
brisk-bills-0.8.1 app/helpers/has_credential_model_helper.rb
brisk-bills-0.7.0 app/helpers/has_credential_model_helper.rb
brisk-bills-0.6.0 app/helpers/has_credential_model_helper.rb