我使用回形針將文件附加到我的模型。我想要做的是,在保存模型並將文件寫入磁盤之後,我需要更新模型中關於文件(CRC)的另一個屬性。由於paperclip在調用.save之前不會將文件寫入磁盤,我首先想到的是使用after_save回調。當我這樣做時,我得到一個「SystemStackError(堆棧級別太深):」錯誤。然後,我試圖做一個after_commit回調,似乎工作更好一點。例如,如果我簡單地將我的crc分配給:保存後何時更新記錄?
self.crc = "TEST"
self.save
This works。但是,如果我嘗試做我真正的分配,與此:
self.crc = "0x" + IO.read(self.patchfile.path, 4, 0x20).unpack("H8").join
self.save
的WEBrick中止與:
/usr/local/rvm/rubies/ruby-1.9.2-p290/lib/libruby.so.1.9(+0x180048) [0x290048]
/usr/local/rvm/rubies/ruby-1.9.2-p290/lib/libruby.so.1.9(rb_yield+0x56) [0x294c46]
[NOTE]
You may have encountered a bug in the Ruby interpreter or extension libraries.
Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html
Aborted
所以我想我這樣做不對...
我應該提到,雖然它殺死WEBrick,但它確實有效。當我重新啓動時,CRC屬性設置正確。另外,在上面列出的錯誤中,還有更多,我只是貼出了尾部。 –