RSpec предоставляет ActiveModel :: MassAssignmentSecurity :: Error - PullRequest
4 голосов
/ 03 апреля 2012

Я слежу за Railstutorial.org и получаю сообщение об ошибке MassAssignment при использовании Rspec.

10) User when email format is invalid should be invalid
     Failure/Error: @user = User.new(name:"Example", email:"example@gmail.com",
     ActiveModel::MassAssignmentSecurity::Error:
       Can't mass-assign protected attributes: password, password_confirmation

Возможно, потому что я пытаюсь присвоить перед переменными в RSpec:

  ...
  before do
     @user = User.new(name:"Example", email:"example@gmail.com", 
                                password: "foobar", password_confirmation: "foobar" )
  end

  subject { @user }
  ...

Можно ли отключить защиту MassAssignment в режиме разработки или тестирования? Или когда работает RSpec? Любая помощь будет отличной! Спасибо

Ответы [ 2 ]

7 голосов
/ 03 апреля 2012

Вы можете просто избежать массового назначения:

before do
  @user = User.new(name:"Example", email:"example@gmail.com").tap do |u|
    u.password = "foobar"
    u.password_confirmation = "foobar"
  end
end
3 голосов
/ 03 апреля 2012

Вы можете назначать атрибуты отдельно и не использовать массовое назначение.

@user = User.new(name:"Example", email:"example@gmail.com")
@user.password = "foobar"
@user.password_confirmation = "foobar" 
...