保华的Rails学习笔记

group删除后my posts出错的解决方法

在rails101,教材的写法中,如果删除group,那么它下边的post还是存在的,这时候,如果点击下拉框中的my posts,就会报错:


这是因为虽然删除了group,但是它下边的posts还存在,当显示这些post的时候,因为它没有所属的group,所以才会出错

解决办法:
1、直接用Post.all.delete_all这种方法最简单,但是它把其他文章都删除了,显然在production环境中,这样做是不符合逻辑的

2、找出这些文章,删除它们


步骤,先要知道,删除的group的group_id,然后定位到它下边的文章,最后删除就可以了

3、先找出删除的group_id,然后把它下边的文章的group_id批量赋值给其他group

4、与3相近,再建立一个group,然后把这些group的id,赋值给删除的group_id
例如删除了id为18的group,那么新建立一个group后,把这个group的id赋值为18

后3种方法,可以使这些文章都保留下来,而且my posts正常显示

为了彻底解决这个问题,用了上边4个方法后,还需要修改group.rb文件,把
has_many :posts这一句修改为 has_many :posts, dependent: :destroy
当样,当删除group后,它下边的所属的文章,也一并都删除