2013-08-20 63 views
0

我有3個車型裏面應該有與之關聯的圖片:如何爲多個模型設置回形針和關聯?

Program.rb 
Episode.rb 
Gallery.rb 

任何人都需要有不同的圖像大小。例如:

Program -> 100x100 , 250x400 , 500x400 
Episode -> 222x450 , 210x330 , 1000x1200 
Gallery -> 100x100 , 500x400 , 1000x1200 

首先,我想到了一個polymorphic協會一個Picture模型has_attached_file(曲別針的助手)的就足夠了。就像這樣:

class Picture < ActiveRecord::Base 

has_many :imageable, :polypmorphic=> :true 
has_attached_file :image, :styles => {... :program1 => "100x100>", :program2 => "250x400>", :episode1=>"222x450" , :episode2=>"210x330" , :gallery1=>"100x100" , :gallery2=>"500x400" .... } 
# There are almost 10 different styles for different models... 
end 

通過這種方式,我可以用圖像就像這樣:

但我不認爲這是有效的?是嗎?

什麼是處理這種需求的最佳策略是什麼?

我該如何建立我的關聯和Paperclip?

例如,爲每個模型設置回形針是否更好?

我想收集一個表中的所有圖像將是一個很好的做法?

您認爲如何?

這應該是一個常見的問題呢?不是嗎?

謝謝

回答

0

就個人而言,我不會把附着在一個多態模型,除非他們都需要完全一樣的尺寸。即使那樣,我仍然可能不會。儘管如此,一些人有業務需求,說他們的所有圖像應該放在一張桌子上,所以他們的選擇可能會有所不同。

但在你的情況下,它聽起來不像。我肯定會把你的附件直接放在給定的模型上。您需要的附件最多隻有一列(儘管您可以擁有更多)。你在做什麼Imageable?它實際上只是保存數據,而不是行爲(行爲真的在Paperclip內部,並且涉及持久性而不是業務邏輯,因此應該像AR一樣對待)。

最後,上傳一個圖像到Episode模型將需要額外的9次變革,意味着convert等9調用和9額外的文件保存(相當緩慢的,如果我們談論的網絡存儲),所有有請求期間發生,讓用戶等待。

+0

非常感謝您考慮我的郵件並回答喬恩的問題。我appriciate它。 – scaryguy