比如:
我在 ruby-china 发个帖,我点击 上传了一张图片,这时候会向后台发送一个 POST 请求,把这张图片上传到服务器,然后写入数据库(比如 ruby-china 里面是 photos 这张表)。
好,现在我突然决定不发帖了,退出页面了,或者说我发帖之后把这个帖子删了,但是这张图片依然存在服务器和数据库里面,而这里面的图片已经没用了,有什么办法删掉它吗?
思考:
class Photo < ApplicationRecord
belongs_to :user
end
那么如果有个删帖的功能(真删除),帖子删了之后这些相关图片还是存在的吧?那这样累计下去不会占用很多空间吗?或者说我就一直点上传图片,传很多,但我不发帖,那这些图片有什么办法删掉?
这样做的话,那么在 photos 表里面应该有个 topic_id 的字段吧,那么,我在发帖的时候 (topics/new) 这时候新话题还没存入数据库,哪里有 id? 也就是说当上传图片的时候,POST 请求过去,然后执行
@photo = Photo.new
@photo.topic_id = ??
这个 topic 的 id 要等表单提交之后,执行 create action 之后才有 id 呀
然后我就想,那么我在 create topic 之后去修改 photo 的 topic_id? 这时候那一堆 photo 和这个 topic 已经没有关联了啊,那我还怎么能找到这些个指定的 photo?
我不知道我表达清楚没,这东西和帖子&回复啥的不一样,topic has many replies, reply belongs to topic, 在创建回复的时候可以找到这个 topic, 就能 topic.replies.create,但是这个是在 topic 没有创建的时候去操作,创建 photo 需要 topic, 而 topic 还没创建,等 topic 创建了,photo 又已经创建好了,我想给 photo 加上 topic_id,又需要这个 topic_id 才能找到 photo, 这不是个悖论吗?(当然如果是 edit topic(topics/22/edit),然后上传图片,这样是没问题)
其实我是在用 rails_kindeditor 这个 gem,它里面要求的一个 owner_id 就是事先被创建的而且不能是空的,所以就遇到这个问题了
最后总结一下,转化为一个问题就是 怎么能把 topic 和 上传的图片 关联起来?