Je viens juste de commencer à apprendre les rails et le rubis, alors s'il vous plaît, supportez-moi si c'est trop bête.Rails: impossible d'assigner la masse à ces attributs protégés en essayant de définir le type STI pendant la création
Il existe plusieurs types d'AppModule différents dans mon application, qui ont un comportement différent mais des données similaires. Je les enregistre donc en utilisant l'héritage de table unique.
Cependant, en essayant permettre à l'utilisateur de sélectionner explicitement le type qu'ils veulent app_modules/new.html.erb
je reçois l'avertissement WARNING: Can't mass-assign these protected attributes: type
. Voici le code correspondant:
<% form_for(@app_module) do |f| %>
<%= f.error_messages %>
<p>
<%= f.label :type %><br />
<%= f.select(:type, options_from_collection_for_select(AppModule.subclasses().map{ |c| c.name}, 'to_s', 'to_s')) %>
</p>
<%= f.submit 'Create' %>
<% end %>
J'ai essayé de placer explicity dans le fichier attr_accessible :type
modèle, mais il ne fonctionne pas
J'utilise des rails 2.3.8 et 1.8.7 rubis.
Toute aide grandement appréciée, merci ...
Ceci est vraiment pratique avec STI. –
Bien sûr, vous ajouteriez une vérification pour vous assurer que seuls les types que vous autorisez spécifiquement peuvent être créés de cette manière. Ce code permettrait à un utilisateur de créer n'importe quelle classe qu'il aime dans votre application et de lui fournir les paramètres d'initialisation de son choix (si je ne me trompe pas). –
@BrendonMuir Oui c'est un bon point, vous devriez toujours désinfecter les params qui exécutent du code comme celui-ci. Je vais ajouter une ligne pour cela. –