Besoin d'une validation spécifique params de l'attribut

J'ai besoin d'écrire de validation pour role paramètre de accounts_controller. Si les enregistrements avec role admin, un seul, ce dossier ne peut pas mettre à jour l'attribut role à user.

Cette validation doit fermer bug de sécurité. Mais je ne sais pas comment l'écrire.

accounts_controller.rb

class AccountsController < ApplicationController
  def index
    @accounts = Account.all
  end
  def update
    @account = Account.find(params[:id])
    redirect_to accounts_path if account.update(role: params[:role])
  end
end

compte.rb

class Account < ApplicationRecord
  enum role: [:user, :admin]
end

schéma.rb

create_table "accounts", force: :cascade do |t|
  t.integer "role", default: 0
end

J'essaie d'écrire quelque chose comme ceci: validate :role, less_than_or_equal_to: 1, mais il n'a pas fonctionne.

0
2019-09-18 17:05:00
source
0 réponses

Voir d'autres questions sur les étiquettes