Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 堆栈级别太深,在保存之前_Ruby On Rails_Ruby On Rails 3_Infinite Loop - Fatal编程技术网

Ruby on rails 堆栈级别太深,在保存之前

Ruby on rails 堆栈级别太深,在保存之前,ruby-on-rails,ruby-on-rails-3,infinite-loop,Ruby On Rails,Ruby On Rails 3,Infinite Loop,好吧,这件事快把我逼疯了。我有一个小方法大致如下: class PdfResult < ActiveRecord::Base attr_accessible :press_ready_url, :low_resolution_url, :error_code, :document_id before_save :update_values def created? return true if press_ready_url.pr

好吧,这件事快把我逼疯了。我有一个小方法大致如下:

class PdfResult < ActiveRecord::Base
  attr_accessible :press_ready_url, :low_resolution_url, :error_code,
                  :document_id

  before_save :update_values

  def created?
    return true if press_ready_url.present? && low_resolution_url.present?
  end

  def error?
    error_code == 201 || error_code == 204 ? false : true
  end

  private

  def update_values
    return if error?
    self.updated_at = Time.now
    if created?
      self.error_code = 201
    else
      update_attributes(press_ready_url: nil, low_resolution_url: nil)
      self.error_code = 204
    end
    save!
  end
end
classpdfresult

我的
错误
方法只会导致
堆栈级别太深
错误。有人能帮我理解为什么吗?按照我的逻辑,它应该可以正常工作。谢谢我是否需要防止
错误\u代码
以某种方式更改?

更新属性
保存模型,触发回调。在保存
回调之前,不应在
中触发
保存
,否则会耗尽堆栈

与此相反:

update_attributes(press_ready_url: nil, low_resolution_url: nil)
使用以下命令:

self.press_ready_url = self.low_resolution_url = nil

哇!简单而直接。非常感谢。