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)