Comment attr_accessible est-il utilisé dans Rails 4?

attr_accessible semble plus fonctionner dans mon modèle.

Quelle est la façon d’autoriser l’affectation de masse dans Rails 4?

Rails 4 utilise maintenant des parameters forts .

La protection des atsortingbuts est désormais effectuée dans le contrôleur. Ceci est un exemple:

 class PeopleController < ApplicationController def create Person.create(person_params) end private def person_params params.require(:person).permit(:name, :age) end end 

Plus besoin de définir attr_accessible dans le modèle.

Traiter avec accepts_nested_atsortingbutes_for

Afin d’utiliser accepts_nested_atsortingbute_for avec des parameters forts, vous devrez spécifier quels atsortingbuts nesteds doivent être placés en liste blanche.

 class Person has_many :pets accepts_nested_atsortingbutes_for :pets end class PeopleController < ApplicationController def create Person.create(person_params) end # ... private def person_params params.require(:person).permit(:name, :age, pets_attributes: [:name, :category]) end end 

Les mots-clés sont explicites, mais au cas où, vous pouvez trouver plus d'informations sur les parameters forts dans le guide Rails Action Controller .

Remarque : Si vous souhaitez toujours utiliser attr_accessible , vous devez append protected_atsortingbutes à votre Gemfile . Sinon, vous serez confronté à une RuntimeError .

Si vous préférez attr_accessible, vous pouvez également l’utiliser dans Rails 4. Vous devriez l’installer comme un bijou:

 gem 'protected_atsortingbutes' 

après cela, vous pouvez utiliser attr_accessible dans vos modèles comme dans Rails 3

Aussi, et je pense que c’est la meilleure façon d’utiliser des objects de formulaire pour gérer l’affectation de masse et sauvegarder des objects nesteds, et vous pouvez également utiliser gem protected_atsortingbutes de cette façon

 class NestedForm include ActiveModel::MassAssignmentSecurity attr_accessible :name, :telephone, as: :create_params def create_objects(params) SomeModel.new(sanitized_params(params, :create_params)) end end 

On peut utiliser

 params.require(:person).permit(:name, :age) 

où personne est Model, vous pouvez passer ce code sur une méthode person_params & utiliser à la place de params [: person] dans la méthode create ou bien la méthode

1) Mettre à jour Devise pour qu’il puisse gérer Rails 4.0 en ajoutant cette ligne au fichier Gemfile de votre application:

 gem 'devise', '3.0.0.rc' 

Ensuite, exécutez:

 $ bundle 

2) Ajouter l’ancienne fonctionnalité de attr_accessible aux rails 4.0

Essayez d’utiliser attr_accessible et ne commentez pas cela.

Ajoutez cette ligne au fichier Gemfile de votre application:

 gem 'protected_atsortingbutes' 

Ensuite, exécutez:

 $ bundle 

Une mise à jour pour Rails 5:

 gem 'protected_atsortingbutes' 

ne semble plus fonctionner. Mais donnez:

gem ‘protected_atsortingbutes_continued’

un essai.