我有一个用户模型和一个项目模型。 User模型有一个PhotoUploader作为载波上传器,Project模型有一个LogoUploader作为载波上传器。
我还有一个引用用户或项目的Poster模型。通过这个海报,我可以用相同的方式发布一个用户或项目的帖子(显示名称,描述和图像)。
问题在于我想使用像“image”这样的字符串属性来引用用户或项目中的徽标,这是来自carrierwave的上传者对象。
我不想复制图片。
我该怎么做?这是正确的方法吗?
答案 0 :(得分:0)
多态协会是您所需要的。 http://guides.rubyonrails.org/association_basics.html#polymorphic-associations http://railscasts.com/episodes/154-polymorphic-association-revised
<强>模型/ media.rb 强>
class Media < ActiveRecord::Base
attr_accessible :content
belongs_to :mediable, polymorphic: true
end
<强>模型/ user.rb 强>
class User < ActiveRecord::Base
attr_accessible :content, :name
has_many :medias, as: :mediable
end
<强>模型/ 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
将媒体保存到用户时,您将创建一个新的媒体行:
id mediable_type mediable_id some_other_field
1 User 1 something here
然后你可以拨打current_user.medias