繁体   English   中英

Rspec-rails 4错误:ActiveModel :: ForbiddenAttributesError

[英]Rspec-rails 4 error: ActiveModel::ForbiddenAttributesError

我有一个使用mongoid作为orm在rails 4.1运行的应用程序。 我创建了一个名为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!(param)ActiveModel :: ForbiddenAttributesError:ActiveModel :: ForbiddenAttributesError

我知道这与强大的参数有关,但无法弄清楚我在做什么错。

精美的手册中

需要(钥匙)

[...]返回给定key处的参数[...]

所以说param.require(:user)完全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

控制器中的用法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM