【发布时间】:2017-12-21 16:00:19
【问题描述】:
我正在创建一个将与前端交互以发布到数据库的应用程序。在我的删除端点上,在终端中它显示记录被删除。但在我的测试中,它仍然显示在那里。这是我的测试...
it 'can delete just one favorite leaving the rest' do
user = create(:user)
vid = video_payload
vid_2 = video_payload_2
post "/api/v1/users/#{user.id}/favorites/#{vid[:id]}", params:video_payload
post "/api/v1/users/#{user.id}/favorites/#{vid_2[:id]}", params:video_payload_2
expect(user.favorites.length).to eq(2)
expect(user.favorites[1].video_id).to eq(vid_2[:id].to_i)
delete "/api/v1/users/#{user.id}/favorites/#{vid[:id]}"
expect(user.favorites.length).to eq(1)
expect(user.favorites[0].video_id).to eq(vid_2[:id].to_i)
end
删除后的期望是失败的。
def destroy
# user = User.find(params[:id])
# favorite = Favorite.find_by(user_id: params[:id], video_id: params[:video_id])
# render json: Favorite.delete(favorite.id)
user = User.find(params[:id])
favorite = Favorite.find_by(user_id: params[:id], video_id: params[:video_id])
user.favorites.delete(favorite) if favorite
end
我试过这两种删除记录的方法(注释掉的和未注释的)
Favorite 是用户和另一个表之间的连接。这是多对多的关系。我已经尝试过对其他表和用户进行依赖销毁,但仍然没有相同的错误。
【问题讨论】:
-
您是否尝试过在规范中重新加载用户对象以确定?你可以试试
user.reload.favorites.length。 -
@DerekHopper 成功了!谢谢你。如果您提交答案,我可以接受它,以便您获得信用:D 我已经在终端中完成了,但没有意识到它可以在测试中完成。我现在要去读一读。再次感谢。
标签: ruby-on-rails ruby activerecord