How is attr_accessible used in Rails 4?

🚂 What is attr_accessible and its role in Rails 4?
If you're a Rails developer working with models and mass assignment, you might have come across the attr_accessible method. In previous versions of Rails (prior to Rails 4), attr_accessible was used to specify which model attributes could be mass-assigned. However, in Rails 4 and higher, the attr_accessible method was removed.
So, how can you allow mass assignment in Rails 4 and beyond? Keep reading to find out!
💡 The New Way: Strong Parameters
With the removal of the attr_accessible method, Rails introduced a new approach called Strong Parameters. This feature allows you to define permissible parameters for mass-assignment using a separate mechanism.
Step one is to add the
strong_parametersgem to your Gemfile:
gem 'strong_parameters'Once you've added the gem, you need to update your controllers to use the
ActionController::Parametersclass instead of the regularparamswrapper. This can be accomplished by adding the following code to your controller:
def your_controller_params
params.require(:your_model).permit(:attribute1, :attribute2, ...)
endIn this code snippet, your_model should be replaced with the name of your model, and attribute1, attribute2, etc. should be replaced with the attributes you want to allow for mass assignment.
Finally, in your controller actions where you want to assign attributes, update them to use the strong parameters like this:
def create
@your_model = YourModel.new(your_controller_params)
# ...
endBy doing this, you're explicitly stating which attributes can be mass assigned, making your code more secure and less prone to malicious mass assignment attacks.
🐞 Trouble in Paradise: Common Issues
Issue 1: "My project doesn't have the strong_parameters gem installed!"
If you're working with a Rails 4 or higher project and you haven't installed the strong_parameters gem, you'll likely encounter issues when trying to use params.permit. Make sure to add the gem to your Gemfile and run bundle install to resolve this issue.
Issue 2: "I'm getting an 'Unpermitted parameters' error!"
When using strong parameters, Rails will raise an ActionController::UnpermittedParameters error if you try to mass-assign any attributes that were not explicitly permitted. To fix this issue, simply update your your_controller_params method to permit the unpermitted attribute(s):
def your_controller_params
params.require(:your_model).permit(:attribute1, :attribute2, :unpermitted_attribute)
endIssue 3: "What if I want to whitelist all attributes for mass assignment?"
While it's recommended to be explicit about the attributes you allow for mass assignment, you might occasionally want to whitelist all attributes. To do this, you can use the permit! method:
def your_controller_params
params.require(:your_model).permit!
endUse this with caution, as it opens up your code to potential security risks if the input is not properly sanitized.
🙌 Get in the Rails Flow!
With Strong Parameters, allowing mass assignment in Rails 4 and higher is a breeze. By embracing this new approach, you'll be able to write more secure and resilient code. So, go ahead and update your project to use Strong Parameters right away!
Have you encountered any issues with Strong Parameters in Rails 4? How did you resolve them? Share your experiences and solutions in the comments below! Let's help each other out!
And don't forget to tune in for more exciting tech talk and helpful guides on our blog. Simply subscribe or follow us on social media to never miss an update from us! Happy coding! 💻🎉
Take Your Tech Career to the Next Level
Our application tracking tool helps you manage your job search effectively. Stay organized, track your progress, and land your dream tech job faster.


