ActiveAdmin ForbiddenAttributesError

I am brand new to Ruby on Rails. I am using ActiveAdmin and I have a problem creating AdminUser

ActiveModel :: ForbiddenAttributesError in Admin :: AdminUsersController # create ActiveModel :: ForbiddenAttributesError

Request

Options:

  • {"utf8" => "✓",

  • "authenticity_token" => "NVV ++ 6GNTdA / nDzw1iJ6Ii84pZPcv2mzg0PK2Cg9Ag0 =",

  • "admin_user" => {"email" => "admin2@example.com"},

  • "commit" => "Create Admin user"} *


Rails 4.1.0

activeadmin 1.0.0

ruby 2.1


application / admin / admin_user.rb

ActiveAdmin.register AdminUser do index do column :email column :current_sign_in_at column :last_sign_in_at column :sign_in_count default_actions end form do |f| f.inputs "Admin Details" do f.input :email end f.actions end end 

application / models / admin_user.rb

 class AdminUser < ActiveRecord::Base # Include default devise modules. Others available are: # :confirmable, :lockable, :timeoutable and :omniauthable devise :database_authenticatable, :recoverable, :rememberable, :trackable, :validatable after_create { |admin| admin.send_reset_password_instructions } def password_required? new_record? ? false : super end end 

Gemfile

 source 'https://rubygems.org' gem 'rails', '4.1.0' gem 'sqlite3' gem 'sass-rails', '~> 4.0.3' gem 'uglifier', '>= 1.3.0' gem 'coffee-rails', '~> 4.0.0' gem 'jquery-rails' gem 'turbolinks' gem 'jbuilder', '~> 2.0' gem 'activeadmin', github: 'gregbell/active_admin' gem 'polyamorous', github: 'activerecord-hackery/polyamorous' gem 'ransack', github: 'activerecord-hackery/ransack' gem 'formtastic', github: 'justinfrench/formtastic' gem 'devise' gem 'sdoc', '~> 0.4.0', group: :doc 

<strong> configurations / environment / development.rb

 Rails.application.configure do # Settings specified here will take precedence over those in config/application.rb. # In the development environment your application code is reloaded on # every request. This slows down response time but is perfect for development # since you don't have to restart the web server when you make code changes. config.cache_classes = false # Do not eager load code on boot. config.eager_load = false # Show full error reports and disable caching. config.consider_all_requests_local = true config.action_controller.perform_caching = false # Don't care if the mailer can't send. config.action_mailer.raise_delivery_errors = false # Print deprecation notices to the Rails logger. config.active_support.deprecation = :log # Raise an error on page load if there are pending migrations. config.active_record.migration_error = :page_load # Debug mode disables concatenation and preprocessing of assets. # This option may cause significant delays in view rendering with a large # number of complex assets. config.assets.debug = true # Adds additional error checking when serving assets at runtime. # Checks for improperly declared sprockets dependencies. # Raises helpful error messages. config.assets.raise_runtime_errors = true # Raises error for missing translations # config.action_view.raise_on_missing_translations = true # Sending emails works config.action_mailer.default_url_options = { :host => 'localhost:3000' } end 
+8
ruby ruby-on-rails-4 activeadmin
source share
2 answers

Rails 4 uses strong parameters that move the attribute passed from model to controller. You must specify the attributes that you want to keep in the database. You did not allow attributes in your code, so you get ActiveModel::ForbiddenAttributesError .

Refer to ActiveAdmin documentation : setting strong options

You can configure strong parameters as follows, using the permit_params method, which creates a method called permitted_params , use this method when overriding create or update actions:

 ActiveAdmin.register AdminUser do ## ... permit_params :attr1, :attr2 ## Add this line end 

Replace :attr1 :attr2 , etc. with the actual names of the attributes you want to assign to whitelists. For example :email

+34
source share

What you see is a security feature for new versions of Rails. You will need to create a whitelist of attributes that can be updated with parameters entered by the user. Otherwise, you will need to set each value manually.

Here is an example of a white list of specific parameters:

 ActiveAdmin.register Post do permit_params :title, :content, :publisher_id end 

See ActiveAdmin docs on the topic: https://github.com/gregbell/active_admin/blob/master/docs/2-resource-customization.md#setting-up-strong-parameters

+1
source share

All Articles