web-dev-qa-db-fra.com

Rails 4 Paramètres forts: autoriser tous les attributs?

Je construis une application Web avec des paramètres puissants Rails 4.

Lors de la construction des contrôleurs administratifs, je me demande quel est le meilleur moyen d'autoriser tous les attributs de modèle.

Pour l'instant, j'ai écrit ceci:

def user_params 
  params.require(:user).permit(User.fields.keys)
end

Pensez-vous d'une meilleure façon?

63
Nicolas Blanco

Vous pouvez appeler la version bang du permis.

params.require(:user).permit!

Strong Params README sur Github

Code source pour référence: 

def permit!
  each_pair do |key, value|
    convert_hashes_to_parameters(key, value)
    self[key].permit! if self[key].respond_to? :permit!
  end

  @permitted = true
  self
end
134
Damon Aw

La réponse de Skull0inc fonctionne, mais vous voudrez peut-être supprimer created_at et updated_at. L'intention de params forts est de répertorier uniquement les attributs que vous souhaitez mettre à jour par le contrôleur. Quelque chose comme...

def user_params
  params.require(:user).permit(User.column_names - ["created_at", "updated_at"])
end
1
Anthony Sallows

Cela fonctionnerait-il?

def user_params 
  params.require(:user).permit(User.column_names)
end
0
Skull0inc