在Rails中跳过回调的方法的说明

时间:2018-03-09 10:17:11

标签: ruby-on-rails callback

我有视频和播放列表模型。为了推动显示播放列表缩略图的过程 - 我创建了一个名为“缩略图”的列。我想在播放列表更新时随时更新(因为我的应用程序的不同部分有很多这样的情况),所以我尝试使用回调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文档只列出了跳过回调的方法(例如递减,递减计数器等),所以我不知道如何使用它们。

2 个答案:

答案 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