新手问题 一个 mongoid 设计问题

newnewnew · 2013年03月21日 · 最后由 newnewnew 回复于 2013年03月21日 · 2018 次阅读

我有 3 个 model 分别是:album(相册),activity(活动),news(新闻) 这三个 model 都需要关联许多图片,我用 carrierwave 来上传 于是我又写了个 modle: photo

class Photo
  include Mongoid::Document
  belongs_to :photographic, polymorphic: true
end

前面的那三个 model 大概都写成这样 (Album 为例):

class Album
  include Mongoid::Document
  has_many :photos, as: :photographic
end

这样写不知道会不会有问题,Photo 这个 collection 会不会太海量导致查询缓慢?

另外我用 carrierwave 来上传 photo 图片

class Photo
  include Mongoid::Document
  belongs_to :photographic, polymorphic: true

  mount_uploader :image, PhotoUploader

  filed :description

end

在 Album,Activity,News 中的图片我都想用 PhotoUploader 一个 carrierwave uploader 来上传,这里我希望 Album 中的图片存到 public/upload/album/1/下 这里 1 为相应 Album 的 id Activity 中的图片存到 public/upload/activity/1/下 这里 1 为相应 Activity 的 id 该怎么写 PhotoUplader 中的 store_dir 方法呢?

def store_dir
  "upload/#{model.photographic.class.name.downcase}/#{model.photographic_id}"
end

@Rei 谢谢 那请问我的 model 那样设计合理么?

#2 楼 @newnewnew 一般就那样设计,海量之后会各种拆,真到了海量再考虑。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号