0

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

我还有一个引用用户或项目的海报模型。使用此海报,我可以以相同的方式(显示名称、描述和图像)与用户或项目一起发布帖子。

问题是我想引用来自用户的照片或来自项目的徽标,使用像“图像”这样的字符串属性,这是来自carrierwave的上传器对象。

我不想复制图像。

我怎样才能做到这一点?这是正确的方法吗?

4

1 回答 1

0

Polymorphic Association is what you need. http://guides.rubyonrails.org/association_basics.html#polymorphic-associations http://railscasts.com/episodes/154-polymorphic-association-revised

models/media.rb

class Media < ActiveRecord::Base
  attr_accessible :content
  belongs_to :mediable, polymorphic: true
end

models/user.rb

class User < ActiveRecord::Base
  attr_accessible :content, :name
  has_many :medias, as: :mediable
end

models/project.rb

class Project < ActiveRecord::Base
  attr_accessible :content, :name
  has_many :medias, as: :mediable
end

routes.rb

resources :users do
  resources :medias
end

resources :projects do
  resources :medias
end

when you save a media to user, you'll create a new media row:

id   mediable_type   mediable_id    some_other_field
 1       User             1           something here

then you can call current_user.medias

于 2013-08-11T03:16:21.533 回答