RubyChina源代码研究笔记:Rails3+Mongodb: 如何在Rails项目中整合Mongodb
2012-07-05 12:00
357 查看
一直在研究Ruby-China的源代码,RC中使用的是Mongodb. 我也准备尝试一下mongodb。
新建项目
引入Gem
修改Gemfile文件
bundle install
生成配置文件
生成代码
启动程序
访问
看看我们的一个新的需求吧,我们需要假(软)删除 blog,该怎么办呢?其中一个办法就是设置一个 deleted_at 字段,假删除。
但是 软删除是一个公共的需求,看看RubyChina是如何做的吧。
在model/mongoid/soft_delete.rb代码如下
ActiveSupport::Concern http://blog.csdn.net/hexudong08/article/details/7656396
freeze: 冻结所有的值,以后不能修改了,可以通过 frozen? 判断
将代码放到model中,会自动的加载。在model中可以直接引用
最后的blog代码
如何取出非默认的scoped的数据,也就是删除了的blog呢?RubyChina的做法
新建项目
rails new mongodb --skip-active-record生成一个叫mongodb的项目,并且移除active-record的代码
引入Gem
修改Gemfile文件
gem 'mongoid', '3.0.0.rc'运行:
bundle install
生成配置文件
rails g mongoid:config使用默认的吧
生成代码
rails g scaffold blog title:string content:text
启动程序
rails s
访问
http://127.0.0.1:3000/blogs
看看我们的一个新的需求吧,我们需要假(软)删除 blog,该怎么办呢?其中一个办法就是设置一个 deleted_at 字段,假删除。
但是 软删除是一个公共的需求,看看RubyChina是如何做的吧。
在model/mongoid/soft_delete.rb代码如下
# coding: utf-8 # 软删除 module Mongoid module SoftDelete extend ActiveSupport::Concern included do field :deleted_at, :type => DateTime default_scope where(:deleted_at => nil) alias_method :destroy!, :destroy end def destroy if persisted? self.update_attribute(:deleted_at,Time.now.utc) end @destroyed = true freeze end end end代码解说:
ActiveSupport::Concern http://blog.csdn.net/hexudong08/article/details/7656396
freeze: 冻结所有的值,以后不能修改了,可以通过 frozen? 判断
将代码放到model中,会自动的加载。在model中可以直接引用
最后的blog代码
class Blog include Mongoid::Document include Mongoid::Timestamps #会自动生成created_at和update_at字段 include Mongoid::SoftDelete field :title field :content end
如何取出非默认的scoped的数据,也就是删除了的blog呢?RubyChina的做法
@topics = Topic.unscoped.desc(:_id).includes(:user)...
相关文章推荐
- Rails简单的项目研究笔记一
- Rails一个小项目的研究笔记
- Maven下SSM项目整合笔记03:整合项目遇到的错误合集
- Spring整合MongoDB详细讲解(maven项目)
- 如何在创建rails项目时指定版本
- 学习笔记:如何从Eclipse导入github上的项目源代码
- 服装ERP研究(九):DRP项目结束后如何配置支持小组
- 服装ERP研究(九):DRP项目结束后如何配置支持小组
- git笔记——如何将现有项目发布到远程仓库
- 交互设计学习笔记之《如何进行用户研究》【交互设计】
- 学习笔记 - Unity是如何将你的项目发布到如此多的平台的?
- 如何做科研以及研究生毕设与论文研究【笔记】
- MongoDB整合Spring(Maven项目)
- SSO下的CAS如何整合到项目中
- OpenJDK源码研究笔记(八)-详细解析如何读取Java字节码文件(.class)
- web项目中spring如何整合RabbitMQ?
- 没头没尾--项目开发笔记:如何开发代码更新工具?!(下)
- 服装ERP研究(九):DRP项目结束后如何配置支持小组
- 服装ERP研究(九):DRP项目结束后如何配置支持小组
- 学习笔记 Flex和Java整合中如何进行配置