首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ActiveAdmin ForbiddenAttributesError

ActiveAdmin ForbiddenAttributesError
EN

Stack Overflow用户
提问于 2014-05-14 12:54:47
回答 2查看 11.2K关注 0票数 16

我是的新成员。我使用的是ActiveAdmin,我在创建AdminUser时遇到了问题

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

请求

参数:

  • {"utf8"=>"✓“
  • "authenticity_token"=>"nvV++6GNTdA/nDzw1iJ6Ii84pZPcv2mzg0PK2Cg9Ag0=",
  • "admin_user"=>{"email"=>"admin2@example.com"},
  • “提交”=>“创建管理用户”}*

Rails 4.1.0

activeadmin 1.0.0

ruby 2.1

app/admin/admin_user.rb

代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-14 13:32:10

Rails 4使用强参数,将属性白名单从模型移动到控制器。必须指定要保存在数据库中的属性。您不允许代码中的属性,这就是您要接收ActiveModel::ForbiddenAttributesError的原因。

参考ActiveAdmin :设置强参数的文档

您可以使用permit_params方法(它创建一个名为permitted_params的方法)以下列方式设置强参数,在重写createupdate操作时使用此方法:

代码语言:javascript
复制
ActiveAdmin.register AdminUser do
  ## ... 
  permit_params :attr1, :attr2 ## Add this line
end

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

票数 52
EN

Stack Overflow用户

发布于 2014-05-14 13:37:48

您所看到的是较新版本的Rails的安全特性。您必须为属性创建一个白名单,这些属性可以由用户输入的params更新。否则,您必须手动设置每个值。

下面是一个白化某些参数的示例:

代码语言:javascript
复制
ActiveAdmin.register Post do
  permit_params :title, :content, :publisher_id
end

参见有关主题的ActiveAdmin文档:admin/blob/master/docs/2-resource-customization.md#setting-up-strong-parameters

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23655366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档