ActiveAdmin ForbiddenAttributesError [英] ActiveAdmin ForbiddenAttributesError

查看:73
本文介绍了ActiveAdmin ForbiddenAttributesError的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是Ruby on Rails的全新用户。
我正在使用ActiveAdmin,在创建AdminUser时遇到了问题

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

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

Request

Request

参数:


  • { utf8 =>✓,

  • {"utf8"=>"✓",

authenticity_token => nvV ++ 6GNTdA / nDzw1iJ6Ii84pZPcv2mzg0PK2Cg9Ag0 =,

"authenticity_token"=>"nvV++6GNTdA/nDzw1iJ6Ii84pZPcv2mzg0PK2Cg9Ag0=",

admin_user => {电子邮件 => admin2@example.com},

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

commit =>创建管理员用户} *

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

Rails 4.1.0

activeadmin 1.0.0

红宝石2.1

app / 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

app / 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 

config / environments / development.rb

Rails.application.configure do
  # Settings specified here will take precedence over those in config/application.rb.

  # In the development environment your application's 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


推荐答案

Rails 4 使用强大的参数,这会将属性白名单从模型移至控制器。有必要指定要保存在数据库中的属性。您尚未在代码中允许使用属性,这就是为什么您收到 ActiveModel :: ForbiddenAttributesError 的原因。

Rails 4 uses strong parameters, which moves attribute whitelisting from the model to the controller. It is necessary to specify the attributes that you would like to be saved in the database. You have not permitted the attributes in your code, which is why you are receiving the ActiveModel::ForbiddenAttributesError.

请参阅 ActiveAdmin:设置强参数

Refer to the documentation of ActiveAdmin : Setting up Strong Parameters

您可以使用 permit_params通过以下方式设置强参数方法创建一个名为 permitted_pa​​rams 的方法,在覆盖 create 或<$时使用此方法c $ c> update 操作:

You can setup strong parameters in the following way, using 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

:attr1 :attr2 等替换为要白名单的实际属性名称。例如::email

Replace :attr1, :attr2, etc with the actual attribute names that you want to whitelist. For example: :email

这篇关于ActiveAdmin ForbiddenAttributesError的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆