首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rspec-rails 4错误: ActiveModel::ForbiddenAttributesError

Rspec-rails 4错误: ActiveModel::ForbiddenAttributesError
EN

Stack Overflow用户
提问于 2014-05-18 19:28:45
回答 1查看 690关注 0票数 0

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

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

当我运行规范时,我会得到以下错误

ActiveModel::ForbiddenAttributesError失败/错误: User.create!(param) ActiveModel::ForbiddenAttributesError: User.create

我知道这与强参数有关,但我不知道我做错了什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-18 20:00:24

来自精细手册

要求(键) ..。返回给定key处的参数.

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

我想你想说的更像这样:

代码语言:javascript
复制
param = ActionController::Parameters.new(@attr)
User.create!(param.require(:user).permit!)

这一用法将与通常的做法相匹配:

代码语言:javascript
复制
def some_controller_method
    @user = User.create(user_param)
end

def user_param
    param.require(:user).permit!
end

控制器中的用法。

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

https://stackoverflow.com/questions/23725983

复制
相关文章

相似问题

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