我正在尝试在用户控制器上测试创建操作。问题是允许以前创建帐户但从未实际创建订阅的客户在注册时使用相同的电子邮件但不绑定到其原始密码。我的测试如下:
it "updates the user password for user with no entitlement" do
user6 = Factory(:user)
user_params_without_entitlement= { :email => user6.email, :password => "mynewpassword", :password_confirmation => "mynewpassword", publisher_id: user6.publisher_id }
post :create, user_params_without_entitlement
hash = Hashie::Mash.new(JSON.parse response.body)
expect(hash[:errors].present?).to eq(false)
expect(user6.password).to eq("mynewpassword")
end
我的控制器看起来像:
def create
if @user.save && @user.activate!
render :create, status: 200
elsif @user.errors[:email].first == "Oops! Looks like you've already created an account. Please <a href='/account'>click here to sign in.</a>"
user = User.find_by_email(params[:email])
if user.user_entitlements.empty? && user.update_attributes(password: params[:password], password_confirmation: params[:password_confirmation])
render :create, status: 200
else
render json: {errors: @user.errors}, status: 422
end
else
if render json: {errors: @user.errors}, status: 422
end
end
end
如果我在
下方放置一个绑定user.user_entitlements.empty? && user.update_attributes(password: params[:password], password_confirmation: params[:password_confirmation])
我打电话给user.password我得到&#34; mynewpassword&#34;所以密码正在更新。在测试中虽然密码仍然显示为原始密码。我尝试添加user6.reload!在预期阻止之前的测试中我得到了
NoMethodError: undefined method `reload!' for #<User:0x007fa9a3342fc0>
我发现了这个问题:https://github.com/rweng/pry-rails/issues/9这表明我应该修改我的.pryrc文件。我以前没有.pryrc文件。我创建了一个.pryrc文件并一次尝试了这篇文章中的所有内容(pry gem how to reload?),但没有成功。我在应用程序的根目录中创建了.pryrc,此时我不知道该怎么做。
答案 0 :(得分:2)
重新加载一个对象是object.reload
- 没有!bang
在控制台内部,您使用reload!
重新加载空洞应用程序模型。
所以在你的情况下做user6.reload