![](/img/trans.png)
[英]rspec controller 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.