如何在Rails 4中使用回调after_destroy(或类似的东西)?

时间:2016-02-15 13:49:20

标签: ruby-on-rails ruby ruby-on-rails-4 callback

我正在创建一个创建轮询的应用程序,每个轮询都有很多轮询页面,每个轮询页面都有很多问题集群,我想要做的是当删除问题集群时,搜索每个问题集群同一页面位置较高,减少1。

这是我尝试过的,但它甚至没有运行:

after_destroy :reassign_position

private

def reassign_position
  question_clusters = QuestionCluster.where(poll_page_id: self.poll_page_id)
  question_clusters.where("position > ?", self.position)

  quest_cluster.each do |question_cluster|
    question_cluster.position -= 1
  end
end

我如何实现我想要的目标?

1 个答案:

答案 0 :(得分:0)

您没有更新question_cluster的属性(position)。看看:

def reassign_position
  question_clusters = QuestionCluster.where(poll_page_id: self.poll_page_id)
  question_clusters.where("position > ?", self.position)

  quest_cluster.each do |question_cluster|
    # actually update the question_cluster
    question_cluster.update!(position: question_cluster.position - 1) # <========
  end
end