所以我需要在模型創建方法中創建屬於我的模型(字符串與圖像的url)的圖像。 問題是,這個圖像是一個QR碼,應該包含被創建的對象的url。需要在創建時生成一個包含id的對象
但是URL(當然)在create方法中是未知的,因爲沒有id在給定對象的那一點存在。
任何想法如何解決這個問題?
所以我需要在模型創建方法中創建屬於我的模型(字符串與圖像的url)的圖像。 問題是,這個圖像是一個QR碼,應該包含被創建的對象的url。需要在創建時生成一個包含id的對象
但是URL(當然)在create方法中是未知的,因爲沒有id在給定對象的那一點存在。
任何想法如何解決這個問題?
除了在URL中使用非id列(例如,調用以生成UDID/GUID並在url中使用該列),我沒有看到一個明顯的方式來做到這一點,或者節省兩個階段,採用after_create回調來設置圖像一旦記錄已被保存:
class MyModel < ActiveRecord::Base
after_create :set_image
def set_image
if image_attribute == nil
image_attribute = generate_a_qr_code(self)
self.save
end
end
end
使用兩通節能:-)
def create
model = Model.new params[:model]
if model.save
# at this point you have an id
model.qr = generate_qr model
model.save
# proceed as usual
end
end
這是通過自動遞增列作爲主鍵傳統的數據庫。在某些數據庫中,使用可以查詢的序列來生成密鑰以獲取新值(保存對象之前)。在一些數據庫(MongoDB)中,密鑰可以完全在客戶端上生成。
你的問題是有點模糊,但你不能在你的模型建立在'after_create'回調圖像? – Mischa 2012-01-06 15:34:50
@Mischa好點,但我無法訪問我的模型中的url-helper方法來創建我的qr-image – choise 2012-01-06 15:50:11
爲什麼不呢? http://stackoverflow.com/questions/341143/can-rails-routing-helpers-i-e-mymodel-pathmodel-be-used-in-models – Mischa 2012-01-06 15:56:31