我有一個圖像,belongs_to
一個用戶和一個二進制文件(物理文件屬性存儲在一個單獨的模型)。在過去(讀:昨天),我手動設置的USER_ID值:在Rails中設置關聯的ID
@image = Image.new(params[:image])
@image.user_id = current_user
一個朋友最近避讓我的事實,我應該用協會代替,所以我的控制器代碼變成了:
@image = current_user.image.new(params[:upload])
這當然更好,而且效果很好。現在我想爲我的二元關聯做類似的事情,但我不知道如何。提取和存儲我的二進制文件是由一個BinaryObserver
類完成的,該類觀察Image
模型。在觀察者的before_validation
回調中,上傳的文件被髮送到Binary
類,並且創建/存儲二進制對象。一旦存儲,我需要爲我的圖像模型設置binary_id
值。我一直在用手動的方式去做,但現在我覺得我應該以另一種方式來做。下面是我在BinaryObserver#before_validation
:
def before_validation(model)
binary = Binary.new.upload(model.upload) rescue raise
binary = binary.store()
model.binary_id = binary.id
rescue => e
#
# Rethrow any exception that was raised.
#
raise
end
我應該做這樣的其他方式?如果是這樣,怎麼樣?在多關聯場景中,我看不到一種方法可以「自動」設置多個外鍵值。
謝謝。
Rob
我這樣做。圖像屬於二進制和二進制has_one圖像。 – 2009-09-21 01:28:13