Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rspec rails 4错误:ActiveModel::ForbiddenAttribute错误_Ruby On Rails_Ruby On Rails 4_Rspec_Mongoid_Strong Parameters - Fatal编程技术网

Ruby on rails Rspec rails 4错误:ActiveModel::ForbiddenAttribute错误

Ruby on rails Rspec rails 4错误:ActiveModel::ForbiddenAttribute错误,ruby-on-rails,ruby-on-rails-4,rspec,mongoid,strong-parameters,Ruby On Rails,Ruby On Rails 4,Rspec,Mongoid,Strong Parameters,我有一个应用程序运行在rails4.1中,使用mongoid作为orm。我创建了一个名为User的模型,它有一个属性email。我正在使用RSpec进行测试。我创建了以下规范 require 'spec_helper' describe 'User' do before(:each) do @attr = { user: { email: "rahul@gmail.com" } } end it "should crea

我有一个应用程序运行在
rails4.1
中,使用
mongoid
作为orm。我创建了一个名为
User
的模型,它有一个属性
email
。我正在使用
RSpec
进行测试。我创建了以下规范

require 'spec_helper'

describe 'User' do

  before(:each) do
    @attr = { 
      user: {
        email: "rahul@gmail.com"
      }
    }
  end

  it "should create a valid User instance" do
    param = ActionController::Parameters.new(@attr)
    param.require(:user).permit!
    User.create!(param)
  end
end
当我运行规范时,我得到以下错误

失败/错误:User.create!(参数) ActiveModel::禁止属性错误: ActiveModel::禁止属性错误

我知道这与强参数有关,但无法找出我做错了什么

来自:

需要(键)

[…]返回给定
键处的参数

所以说
param.require(:user)
param
没有任何作用,它只是进行存在性检查并返回
param[:user]

我想你应该说得更像这样:

param = ActionController::Parameters.new(@attr)
User.create!(param.require(:user).permit!)
该用法将与通常的用法相匹配:

def some_controller_method
    @user = User.create(user_param)
end

def user_param
    param.require(:user).permit!
end
在控制器中的使用