Ruby on rails 轨道相关销毁错误
我有一个Rails电影应用程序。显然,有一张电影桌。一部电影Ruby on rails 轨道相关销毁错误,ruby-on-rails,model-view-controller,associations,dependent-destroy,Ruby On Rails,Model View Controller,Associations,Dependent Destroy,我有一个Rails电影应用程序。显然,有一张电影桌。一部电影有很多:注释,:dependent=>:destroy,注释属于:movie。 评论也属于:user,因此当新用户对电影发表评论时,该评论将显示在他们的用户35; show页面上 如果用户对电影发表评论,评论将显示在他们的页面上。我还可以转到localhost:3000/comments/:id查看该评论的显示页面 现在我的问题是: 如果我随后销毁或删除带有该评论的电影,该评论实际上不会被删除。我仍然可以转到localhost:3000
有很多:注释,:dependent=>:destroy
,注释属于:movie
。
评论也属于:user,因此当新用户对电影发表评论时,该评论将显示在他们的用户35; show
页面上
如果用户对电影发表评论,评论将显示在他们的页面上。我还可以转到localhost:3000/comments/:id
查看该评论的显示页面
现在我的问题是:
如果我随后销毁或删除带有该评论的电影,该评论实际上不会被删除。我仍然可以转到localhost:3000/comments/:id
,如果我转到users/:id/reviews
(显示用户评论的地方),我会收到一个错误,因为该评论仍在显示,并且仍然属于电影。
因此,我得到了一个此类错误无法找到id=58的电影
在Movies\u controller.rb
destroy action
中是否有一种方法可以说明在删除电影时,还可以使用movie\u id=>params[:id]
删除电影评论的另一种方法:
def destroy
@movie = Movie.find(params[:id])
@movie.comments.delete_all
@movie.destroy
end
:dependent
应该是此行中的一个符号:有许多:注释,:dependent=>:destroy
。如果这是您实际代码中的一个输入错误,请修复并查看这是否解决了问题。此线程可能会帮助您解决有关MoviesController#destroy
操作的问题:我的代码现在不在我身边,但我确实认为在我的模型中冒号已经存在,因此这只是问题而不是代码的问题。编辑了它。好的,这样可以工作,但它会让用户退出。因此,通过销毁电影和评论,您也在销毁用户会话。这个问题不是来自我的代码,事实上,问题出在其他地方,我怀疑这就是您的dependent::destroy不起作用的原因。把你的日志放在销毁电影的动作上。我不是说这是因为你的代码,只是它触发了它。显示您的application.html.erb,或者检查其中是否有
。日志中有一条警告警告:无法验证CSRF令牌的真实性
,我想这可能与此有关。