回形针分开的样式

时间:2016-06-03 09:42:14

标签: ruby-on-rails paperclip

如何为不同型号分隔样式?

我有Photo model生成我的风格

large:'300x300#',huge:'800x800'

我也有两个模特使用这种风格

Product

Post

所以我想用

large style仅适用于Product

huge style仅适用于Post

product => has_many :photos

post => has_one :photo

photo => belongs_to :post
      belongs_to :product
has_attached_file :image, :styles => {large:'300x300#',huge:'800x800'}

有可能吗?

1 个答案:

答案 0 :(得分:0)

我建议您使用STI通过图像模型类型分离图像,并且多态,因此,将imageable_typeimageable_idtype字段添加到照片模型中,因此:

应用/模型/ photo.rb

class Photo < AR::Base
   belongs_to :imageable, polymorphic: true
end

应用/模型/照片/ large_photo.rb

class LargePhoto < Photo
   has_attached_file :image, :styles => { large:'300x300#' }
end

应用/模型/照片/ huge_photo.rb

class HugePhoto < Photo
   has_attached_file :image, :styles => { huge:'800x800' }
end

应用/模型/ product.rb

class Product < AR::Base
   has_many :large_photos, as: imageable
end

应用/模型/ post.rb

class Post < AR::Base
   has_one :huge_photo, as: imageable
end

对我来说,最好使用carrierwave,而不是paperclip