Ruby on rails Carrierwave-如何参考模型';来自不同模型的图像

Ruby on rails Carrierwave-如何参考模型';来自不同模型的图像,ruby-on-rails,ruby,ruby-on-rails-3,paperclip,carrierwave,Ruby On Rails,Ruby,Ruby On Rails 3,Paperclip,Carrierwave,我有一个用户模型和一个项目模型。用户模型有一个PhotoUploader作为carrierwave上传器,项目模型有一个LogoUploader作为carrierwave上传器 我还有一个参考用户或项目的海报模型。有了这张海报,我可以用同样的方式(显示名称、描述和图像)与用户或项目发表文章 问题是,我想引用用户的照片或项目的徽标,使用类似“image”的字符串属性,这是carrierwave的Uploader对象 我不想复制图像。 我该怎么做?这是正确的方法吗?多态关联是您需要的。 型号/媒体

我有一个用户模型和一个项目模型。用户模型有一个PhotoUploader作为carrierwave上传器,项目模型有一个LogoUploader作为carrierwave上传器

我还有一个参考用户或项目的海报模型。有了这张海报,我可以用同样的方式(显示名称、描述和图像)与用户或项目发表文章

问题是,我想引用用户的照片或项目的徽标,使用类似“image”的字符串属性,这是carrierwave的Uploader对象

我不想复制图像。


我该怎么做?这是正确的方法吗?

多态关联是您需要的。

型号/媒体.rb

class Media < ActiveRecord::Base
  attr_accessible :content
  belongs_to :mediable, polymorphic: true
end
class User < ActiveRecord::Base
  attr_accessible :content, :name
  has_many :medias, as: :mediable
end
class Project < ActiveRecord::Base
  attr_accessible :content, :name
  has_many :medias, as: :mediable
end
resources :users do
  resources :medias
end

resources :projects do
  resources :medias
end
将介质保存给用户时,将创建一个新的介质行:

id   mediable_type   mediable_id    some_other_field
 1       User             1           something here

然后你可以调用
当前用户.medias

我可以使用多态性,但我想为用户和项目使用不同的carrierwave上传程序,这就是问题所在。我不能像Media一样将两个上传器合并到一个模型中。请提醒我。