我正在创建一个创建轮询的应用程序,每个轮询都有很多轮询页面,每个轮询页面都有很多问题集群,我想要做的是当删除问题集群时,搜索每个问题集群同一页面位置较高,减少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
我如何实现我想要的目标?
答案 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