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
在控制器中的使用