我有视频和播放列表模型。为了推动显示播放列表缩略图的过程 - 我创建了一个名为“缩略图”的列。我想在播放列表更新时随时更新(因为我的应用程序的不同部分有很多这样的情况),所以我尝试使用回调after_update
:
Class Playlist < ApplicationRecord
after_update :set_thumbnail
def set_thumbnail
video_thumbnail = Video.find(self.content[0]).thumbnail
self.update(thumbnail: video_thumbnail)
end
end
当然,我有无尽的循环。
Rails文档只列出了跳过回调的方法(例如递减,递减计数器等),所以我不知道如何使用它们。
答案 0 :(得分:0)
after_commit callback更适合这里。这将在将更改保存到数据库之后运行,而不像after_update
那样在实际提交到数据库之前执行回调。
after_commit :set_thumbnail, on: [:update]
答案 1 :(得分:0)
可能最好在这里使用before_save
吗?
Class Playlist < ApplicationRecord
before_save :set_thumbnail, on: :update
def set_thumbnail
video_thumbnail = Video.find(self.content[0]).thumbnail
end
end