如何为不同型号分隔样式?
我有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'}
有可能吗?
答案 0 :(得分:0)
我建议您使用STI通过图像模型类型分离图像,并且多态,因此,将imageable_type
,imageable_id
和type
字段添加到照片模型中,因此:
应用/模型/ 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
。