Ruby on rails Обновление ролей пользователей - PullRequest
0 голосов
/ 28 ноября 2018

Я пытаюсь изменить роль пользователя со «бесплатного» до «премиум» после того, как он успешно совершил платеж.

User.rb

   class User < ApplicationRecord

    enum role: [:free, :premium]
    before_create :assign_default_role

      def assign_default_role
      self.role ||= :free
      end
end 

контроллер подписок

def create

  @user = current_user

    @subscription = Subscription.new(subscription_params)
  if @subscription.save_with_payment
    redirect_to @subscription, :notice => "Thank you for subscribing"
    @user.update_attribute(role: premium )
  else
    render :new
  end
end

Я получаю эту ошибку: неопределенная локальная переменная или метод "premium" после попытки заставить пользователя сделатьплатеж

1 Ответ

0 голосов
/ 28 ноября 2018

Вы уверены, что не хотите, чтобы premium было :premium?А еще лучше: как насчет:

@user.premium!

Лично я предпочитаю использовать форму enum:

class User < ApplicationRecord

  enum role: {
    free:     0,
    premium:  1
  }

  before_create :assign_default_role

  def assign_default_role
    self.role ||= :free
  end

end

По причинам, обсуждаемым в документах .

Наконец, возможно, вам следует подумать о том, чтобы установить значение по умолчанию role (с помощью миграции), чтобы вам не пришлось делать этот before_create бит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...