我使用回形针作为使用accept_nested_attributes_for的多个模型的附件。有没有一种方法可以为每个模型指定特定的回形针样式选项?Rails回形针多态样式
回答
是的。我在站点上使用单表继承(STI)来通过资产模型处理音频,视频和图像。
# models/Asset.rb
class Asset < ActiveRecord::Base
# Asset has to exist as a model in order to provide inheritance
# It can't just be a table in the db like in HABTM.
end
# models/Audio.rb
class Audio < Asset # !note inheritance from Asset rather than AR!
# I only ever need the original file
has_attached_file :file
end
# models/Video.rb
class Video < Asset
has_attached_file :file,
:styles => {
:thumbnail => '180x180',
:ipod => ['320x480', :mp4]
},
:processors => "video_thumbnail"
end
# models/Image.rb
class Image < Asset
has_attached_file :file,
:styles => {
:medium => "300x300>",
:small => "150x150>",
:thumb => "40x40>",
:bigthumb => "60x60>"
}
end
都配到Rails为:file
,但是控制器(A/V/I)知道保存到适当的模式。请记住,任何媒体形式的所有属性都需要包含在Asset
中:如果视频不需要标题,但图像需要,那么标题属性将为零,如Video
。它不会抱怨。
如果连接到STI模型,关联也可以正常工作。 User has_many :videos
的操作与您现在使用的操作相同,只要确保不要直接保存到资产。
# controllers/images_controller.rb
def create
# params[:image][:file] ~= Image has_attached_file :file
@upload = current_user.images.build(params[:image])
# ...
end
最后,既然您确实有一个资产模型,您仍然可以直接从它读取数据,例如,你想要一个最近20个资产的列表。此外,此示例不限于分隔媒体类型,它还可用于不同类型的相同内容:阿凡达<资产,图库<资产等。
一个更nicer方式就可以了,(如果使用的是在处理图像):
class Image < ActiveRecord::Base
belongs_to :imageable, :polymorphic => true
has_attached_file :attachment, styles: lambda {
|attachment| {
thumb: (
attachment.instance.imageable_type.eql?("Product") ? ["300>", 'jpg'] : ["200>", 'jpg']
),
medium: (
["500>", 'jpg']
)
}
}
end
你的答案真的有用吗? attachment.instance.imageable_type为零 – 2013-11-09 14:12:20
@ArtemAminov是的,它工作..因为我在我的项目中使用它。 – 2013-11-10 23:22:28
也许你可以帮助我与我的项目,请看这里的代码[链接](http://stackoverflow.com/questions/19901485/paperclip-polymorphic-styles) – 2013-11-11 08:03:43
- 1. 回形针条件样式
- 2. Rails 3 - 回形针带回形针
- 3. Rails - 无回形针使用回形针?
- 4. 回形针返回非现有样式
- 5. 回形针3中的回形针,不能使用样式
- 6. Ruby on Rails:使用多步骤形式的回形针
- 7. 回形针的样式只有当它是一个图像[rails]
- 8. 多步形式回形针附件
- 9. Rails 3.1,回形针,多文件上传
- 10. Rails多图像上传(回形针,carrerwave)
- 11. 样式选项打破回形针
- 12. 定义回形针样式大小dynamicaly
- 13. Activeadmin多态关联,回形针附件
- 14. 回形针多态关联和保存
- 15. 回形针和tempfile与Rails
- 16. 钛+ Rails +回形针=== NULL值?
- 17. 的Rails:回形针MissingRequiredValidatorError
- 18. Rails的4回形针
- 19. Rails回形针,DRY配置
- 20. Ruby on Rails - 回形针 - NoHandleError
- 21. Rails:回形针和预览?
- 22. Rails回形针水印“未初始化的常规回形针”
- 23. Rails 4 +回形针:如何获取回形针文件的URL
- 24. 形式中的Rails多态关联
- 25. Rails回形针插件 - 用于调整大小的样式选项
- 26. 有条件应用样式到回形针附件中的Rails 3.1
- 27. 带有动态样式大小的回形针附件,型号为
- 28. 对象初始化之前调用的回形针动态Proc样式
- 29. Rails的回形针静态文件具有绝对URL
- 30. Rails,回形针和负载平衡器
你在哪里定义在文件被保存?在资产模型上?或者资产模型是空白的?说:':storage =>:s3, :bucket => Rails.application.config.aws_s3_bucket, :s3_credentials =>“#{Rails.root} /config/s3.yml”, :path =>“: class /:id /:style /:basename。:extension“' – 2012-02-26 02:37:37
我只是使用默认值并将Asset模型保留为空,但我敢打赌,有一种方法可以在Asset模型中设置默认值。我没有尝试。 – Eric 2012-09-28 02:37:03