title: Devise update resource without password
body: <p>So I've looked for a way to do this, and I found 
  <code>resource.update_without_password</code> if the goal is to just update some user attributes.  But I'm trying to update subscription information (like credit card details) that will be sent off to <a href="https://www.chargify.com/" rel="nofollow">Chargify</a>.</p>
  
  <p>How do I do this?</p>
  
  <p>Relevant code:</p>
  
  <pre><code>class RegistrationsController &lt; Devise::RegistrationsController
    before_filter :configure_permitted_parameters
    def update
      super
      if params[:product]
          if resource.create_and_subscribe(params[:product])
              if resource.active_for_authentication?
                  set_flash_message :notice, :signed_up if is_navigational_format?
  
                  subscription = resource.subscription
                  if subscription
                      SubscriptionMailer.signup_success(subscription).deliver
                  end
              else
                  set_flash_message :notice, :"signed_up_but_#{resource.inactive_message}" if is_navigational_format?
                  expire_session_data_after_sign_in!
                  respond_with resource, :location =&gt; after_inactive_sign_up_path_for(resource)
              end
          end
      end
  end
  </code></pre>
  
  <p>,</p>
  
  <pre><code>class User &lt; ActiveRecord::Base
    def create_and_subscribe(product_handle)
      if subscription_status != :active
        return unless self.valid?
        product = Chargify::Product.find_by_handle(product_handle)
        if product.nil?
          errors.add(:base, "Product must be selected")
          return nil
        end
  
        User.transaction do
          self.save
          subscription =
              subscription_service.
                    subscribe(self, subscription_params(product.id))
  
          if subscription.errors.any?
            subscription.errors.full_messages.each{|err| errors.add(:base, err)}
            false
            raise ActiveRecord::Rollback
          else
            self.subscription_status = subscription.state
            self.product = subscription.product.handle
            self.save(validate: false)
            true
          end
        end
      else
        errors.add(:base, "You already have a subscription")
      end
    end
  end
  </code></pre>
  
  <p>,</p>
  
  <pre><code>class ChargifySubscriptionService
  
  def subscribe(user, params)
    record = ChargifyRecord.new
    record.user_id = user.id
    subscription = Chargify::Subscription.new(params)
    record.request_params = params
    record.created_at = Time.now
    record.status = subscription.save ? :success : :failure
    record.responded_at = Time.now
    record.response = subscription.to_json
    record.save
    subscription
  end
  </code></pre>