-
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
目前还没有答案
相关推荐
在Ruby on Rails框架中,开发人员经常选择使用关系型数据库如SQLite、PostgreSQL或MySQL来存储数据。然而,随着NoSQL数据库的兴起,MongoDB因其灵活性和非结构化数据处理能力,也成为了许多Web应用程序的选择。本文...
《Rails101_by_rails4.0》是一本专注于Rails 4.0.0版本和Ruby 2.0.0版本的自学教程书籍,它定位于中文读者,旨在成为学习Rails框架的参考教材。Rails(Ruby on Rails)是一个采用Ruby语言编写的开源Web应用框架,它...
3. **ActiveRecord**:Rails中的ORM(对象关系映射)工具,用于处理数据库操作。你需要熟悉数据库模型的创建、查询和关联。 4. **Scaffolding**:Rails提供的一种快速生成CRUD(创建、读取、更新、删除)操作的工具...
通过阅读这本书的翻译版,开发者不仅能学习到RESTful设计模式,还能掌握Rails框架下实现这些模式的具体方法和技术。无论是初学者还是经验丰富的Rails开发者,都能从中受益匪浅,提升自己的Web开发技能。
《敏捷Web开发与Rails》第三版是一本深入探讨Ruby on Rails框架在敏捷软件开发方法论下的应用指南。本书由多位知名作者共同编写,包括Sam Ruby、Dave Thomas、David Heinemeier Hansson等,他们都是在Ruby社区内享有...
rails_apps_composer, 一个 gem,为 Rails 启动应用程序创建 Rails 应用程序模板 Rails 应用编辑器 Rails 应用程序编辑器 gem 安装一个 命令行 工具来从"食谱"的Collection 组装 Rails 应用程序。"你可以使用 rails_...
允许从Rails Admin轻松地将state_machine事件发送到模型,包括对ActiveRecord \ Mongoid和自定义状态字段名称的支持以及每个模型多个状态机的支持。 截屏 正在安装 将此行添加到应用程序的Gemfile中: gem 'rails_...
rails_semantic_logger, Rails 语义记录器用语义记录器替换 Rails 缺省记录器 Rails 语义记录器 语义记录器用语义记录器替代 Rails 缺省记录器。http://github.com/rocketjob/rails_semantic_logger文档有关完整文档...
MongoDB Logger Example on Heroku: 使用mongodb_logger gem的实战指南 MongoDB Logger 是一款用于记录应用程序日志的工具,特别适合在Heroku这样的云平台上使用。这个示例应用旨在展示如何将mongodb_logger gem...
介绍插件,用于对记录进行排序(使用 gem)安装要启用rails_admin_acts_as_list,请将以下内容添加到您的Gemfile : gem 'rails_admin_acts_as_list'gem 'rails_admin' 重要提示: rails_admin_acts_as_list之前必须...
MongoModel是针对MongoDB数据库的Ruby对象数据映射(ORM)框架,专为简化Ruby开发者与NoSQL...结合Rails 3的生态系统,MongoModel能够帮助开发者快速构建功能丰富的应用,同时充分利用MongoDB的非关系型数据处理能力。
Rails3 是 Ruby on Rails 框架的第三个主要版本,它在灵活性、性能和社区支持方面都有显著提升。Thinking Sphinx 是一个为 Rails 应用程序提供全文搜索功能的插件,它将数据库中的数据与 Sphinx 搜索引擎紧密结合,...
它提供了一种简单而优雅的方式来管理和处理模型中的附件,如图片、文档等。Paperclip与ActiveRecord紧密集成,使得在Rails应用中添加文件上传功能变得相当便捷。 **Paperclip的基本使用** 1. **安装与配置** 首先...
Api-rails5_api_tutorial.zip,了解如何在michael hartl的rails 5教程上构建一个现代api立即在rails应用程序中构建一个api!(Rails 5版本),一个api可以被认为是多个软件设备之间通信的指导手册。例如,api可用于web...
### RestFul_Rails_Dev_v_0.1 关键知识点解析 #### 1. REST 概念与背景 REST(Representational State Transfer)是一种软件架构风格,最初由 Roy Fielding 在他的博士论文中提出。它主张使用 HTTP 协议的标准方法...
与关系型数据库不同的是,MongoDB支持文档级别的更新操作(in-place update),以及自动的分片(Auto-sharding)和MapReduce计算模式。 8. MongoDB数据模型: MongoDB使用的是集合(Collection)作为存储数据的容器...
Inspinia Admin Rails全版本正是在这样的背景下应运而生,它为Rails开发者提供了现成的前端资源,极大地提升了开发效率。 该模板包含的文件列表“inspinia_admin_v2.5_Rails_Full_Version”很可能包括以下组成部分...
2. **模型(Models)**:Rails中的模型负责与数据库交互,使用ActiveRecord进行数据操作。书中可能会涵盖ActiveRecord的基本用法,如创建、读取、更新和删除(CRUD)操作,关联关系(如属主、多对多等),以及验证...
Rails_3_Cheat_Sheets.pdf
### Rails 4 in Action, 第二版:关键知识点解析 #### 一、Rails 4简介与新特性 **Rails 4 in Action, 第二版** 是一本深入介绍Ruby on Rails框架的专业书籍。该书由Ryan Bigg、Yehuda Katz、Steve Klabnik和...