2013-08-20 38 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