Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何为多个模型设置回形针和关联?_Ruby On Rails_Ruby On Rails 3_Paperclip_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 如何为多个模型设置回形针和关联?

Ruby on rails 如何为多个模型设置回形针和关联?,ruby-on-rails,ruby-on-rails-3,paperclip,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 3,Paperclip,Ruby On Rails 4,我有3个模型,它们应该有相关的图像: Program.rb Episode.rb Gallery.rb 它们中的任何一个都需要有不同的图像大小。例如: Program -> 100x100 , 250x400 , 500x400 Episode -> 222x450 , 210x330 , 1000x1200 Gallery -> 100x100 , 500x400 , 1000x1200 首先,我认为图片的多态关联模型已经附加了文件(回形针的助手)就足够了。就这样, cl

我有3个模型,它们应该有相关的图像:

Program.rb
Episode.rb
Gallery.rb
它们中的任何一个都需要有不同的图像大小。例如:

Program -> 100x100 , 250x400 , 500x400
Episode -> 222x450 , 210x330 , 1000x1200
Gallery -> 100x100 , 500x400 , 1000x1200
首先,我认为
图片的
多态关联
模型
已经附加了文件
(回形针的助手)就足够了。就这样,

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
@program.pictures.first.image[:program1]
@episode.pictures.second.image[:episode2]
..
.
但我不认为这是有效的?是吗

处理这种需求的最佳策略是什么

我应该如何建立我的联想和回形针?

例如,为每个型号设置回形针是否更好?

我认为在一张桌子里收集所有的图像是一个很好的练习

你觉得怎么样

这其实应该是一个常见的问题吧?不是吗


谢谢你

就我个人而言,我不会把附件放在多态模型上,除非它们都需要完全相同的维度。即使那样,我也可能不会。不过,有些人的业务需求是,他们的所有图像都应该放在一张表中,因此他们的选择可能会有所不同

但在你的情况下,听起来不像。我肯定会把你的附件直接放在给定的模型上。附件最需要的是一列(尽管可以有更多)。你的
Imageable
类在做什么?它实际上只是保存数据,而不是行为(行为实际上在回形针内部,与持久性的关系比业务逻辑更大,因此应该像AR一样对待)


最后,将一个图像上载到
插曲
模型需要9个额外的转换,这意味着在请求过程中必须进行9个其他调用
转换
,以及9个额外的文件保存(如果我们说的是网络存储,则速度非常慢),让用户等待。

非常感谢您考虑我的邮件并回答Jon的问题。我很感激。