Comment obtenir la liste des atsortingbuts d’un modèle activerecord pouvant être affecté en masse

Je voudrais avoir une liste de tous les noms d’atsortingbut qui peuvent être assignés en masse. J’en ai besoin pour un générateur de formulaires personnalisé qui n’appenda pas de champs d’entrée par défaut qui ne peuvent pas être affectés en masse. Par exemple si j’ai un modèle comme:

class Post < ActiveRecord::Base attr_protected :account belongs_to :author validates_presence_of :title, :author end 

J’aimerais avoir une liste contenant: auteur,: titre.

Une idée si une telle méthode existe? Ou des lignes direcsortingces sur la façon dont je peux en créer une qui le fasse?

Post.accessible_atsortingbutes le couvrirait si vous définissiez explicitement attr_accessible

Sauf que, faire quelque chose comme ça est maladroit mais fonctionne:

 Post.new.atsortingbutes.keys - Post.protected_atsortingbutes.to_a 

Certaines des réponses mentionnées précédemment peuvent ne pas s’appliquer aux Rails 4.

Vous pouvez utiliser MyModel.atsortingbute_names pour obtenir le tableau des atsortingbuts de table, bien que cela puisse ne pas vous donner d’atsortingbuts assignables en masse, car cet aspect de Rails change avec la version 4 http://weblog.rubyonrails.org/2012/3/21/ parameters forts /

Juste utiliser

 Post.accessible_atsortingbutes 

Cela retournera tous les atsortingbuts accessibles de la classe

Pour les modèles, vous pouvez utiliser MyModel.atsortingbute_names ou MyModel.column_names .

Pour les instances, vous pouvez utiliser MyModel.new.atsortingbute_names .

Post.accessible_atsortingbutes.to_a.map(&:to_sym)