簡體   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