Мой стандартный current_user.role не меняет свою премию в моем ChargesController
действии, хотя мое действие create (post) следует за ним. Мое действие понижения в моем UserController выполняется правильно и изменяет роль пользователя, которую просто найти, используя тот же самый current_user.role = 'new_role_here'
. Мне любопытно, почему мой current_user.role
не меняется при успешном сохранении сообщения? Любая помощь будет оценена, спасибо.current_user.role не меняется при обновлении (Stripe)
ChargesController Использование полосой
before_action :require_sign_in
def new
@stripe_btn_data = {
key: Rails.configuration.stripe[:publishable_key].to_s,
description: "BigMoney Membership - #{current_user.email}",
amount: 10
}
end
def create
@amount = 500
customer = Stripe::Customer.create(
email: current_user.email,
source: params[:stripeToken]
)
charge = Stripe::Charge.create(
customer: customer.id,
amount: @amount,
description: "BigMoney Membership - #{current_user.email}",
currency: 'usd'
)
current_user.role = 'premium'
if current_user.save!
flash[:notice] = "Thanks for all the money, #{current_user.email}! changed to premium member, #{current_user.role}"
redirect_to wikis_path # or wherever
end
# Stripe will send back CardErrors, with friendly messages
# when something goes wrong.
# This `rescue block` catches and displays those errors.
rescue Stripe::CardError => e
flash[:alert] = e.message
redirect_to new_charge_path
end
end
заряды/new.html.erb
<%= form_tag charges_path do %>
<article>
<% if flash[:error].present? %>
<div id="error_explanation">
<p><%= flash[:error] %></p>
</div>
<% end %>
<label class="amount">
<span>Amount: $5.00</span>
</label>
</article>
<script src="https://checkout.stripe.com/checkout.js" class="stripe-button"
data-key="<%= Rails.configuration.stripe[:publishable_key] %>"
data-description="A month's subscription"
data-amount="500"
data-locale="auto"></script>
<% end %>
маршруты
Rails.application.routes.draw do
get 'charges/create'
get "log_in" => 'sessions#new', :as => "log_in"
get "log_out" => 'sessions#destroy', :as => "log_out"
get "sign_up" => "users#new", :as => "sign_up"
get "my_account" => "users#show", :as => "my_account"
get 'users/confirm' => 'users#confirm'
root :to => "sessions#new"
resources :users
resources :sessions
resources :wikis
resources :charges, only: [:new, :create]
Обязательно принимайте свой ответ, когда сможете. Это правильный ответ, и он поможет другим, кто знает этот вопрос. Кроме того, вы получаете очки и новый значок для этого. : D –
сделаю. Приходится ждать 48 часов;) – DustinRW