0 0

rails使用mongoDB的 embedded_in 多态模型关系下,如何处理图片先保存正文后保存?15

 

好吧。。标题写得比较凌乱,我也不知道怎么一句话描述。

事情的经过是这样的:

 

Picture模型:

 

class Picture
  include Mongoid::Document
  mount_uploader :image, ImageUploader
  field :description
  embedded_in :picturable, :inverse_of => :pictures
end

 

Post模型:

 

class Post 
  include Mongoid::Document
  field :title
  field :content
  embeds_many :pictures
end

 

因为好几个模型都要上传图片,所以图片embedded_in到各个模型里。

 


 

在写post的时候,可以先上传图,然后插入编辑器,再保存post, 其实就和javaeye论坛发帖子的这个结构一样的。

 

以前用mysql数据库的时候,图片会先保存到pictures表,然后把ID返回过来存到页面的hidden_field里,保存好post时候再根据这些hidden_field里面的ID去更新pictures表的记录的外键为这个post的主键,我一直都是这么处理的似乎也没遇到啥问题。

 

但是换成mongoDB后问题就来了,Picture被embedded_in到各个collection里,他自己不是顶级collection,于是我就没办法在上传图片(post尚未保存)的时候就存入数据库,会得到"不允许直接访问嵌入式的集合Picture , 请从文档的根访问集合"的错误返回。

 

然后我就迷茫了,我觉得就结构上讲,图片和post肯定是embed的关系,毕竟没有单独查询图片的需求。可是这样的话,我又不知道该怎么先保存图片,求rails及mongoDB指点。。。

2011年1月13日 20:47
  • 大小: 11.6 KB
目前还没有答案

相关推荐

Global site tag (gtag.js) - Google Analytics