У меня возникли проблемы с проверкой метода update_with_password, который я переопределил в моей модели User.RSpec + Devise + override update_with_password
Я использую Rails 3.2, Разрабатывает 2.2.3 и RSpec рельсы 2,13
Вот что моя модель пользователя update_with_password метод выглядит следующим образом:
#app/model/user.rb
def update_with_password(params, *options)
if encrypted_password.blank?
update_attributes(params, *options)
else
super
end
end
Вот моя спецификация:
#spec/model/user_spec.rb
describe "#update_with_password" do
context "when encrypted password is blank" do
before(:each) do
@user = FactoryGirl.build(:user_via_facebook)
@user.save(validate: false)
@facebook_profile = FactoryGirl.create(:facebook_profile, user: @user)
end
it "updates user attributes without asking current password" do
@user.update_with_password(params: {first_name: "New First Name"})
@user.first_name.should eql "New First Name"
end
end
end
И это ошибка, которую я получаю после запуска спецификации:
User#update_with_password when encrypted password is blank updates user attributes without asking current password
Failure/Error: @user.update_with_password(params: {first_name: "New First Name"})
ActiveModel::MassAssignmentSecurity::Error:
Can't mass-assign protected attributes: params
Как проверить этот метод ?. Там чего-то не хватает, и я не могу понять это. Заранее спасибо.
Спасибо Бен, это сработало! – edelpero