RubyChina源代码研究笔记:Rails3+Mongodb: 如何在Rails项目中整合Mongodb

原创 2012年07月05日 12:00:40
一直在研究Ruby-China的源代码,RC中使用的是Mongodb. 我也准备尝试一下mongodb。

  1.  新建项目
    rails new mongodb --skip-active-record
    生成一个叫mongodb的项目,并且移除active-record的代码

  2. 引入Gem
    修改Gemfile文件
    gem 'mongoid', '3.0.0.rc'   
    运行:
    bundle install

  3. 生成配置文件
    rails g mongoid:config
    使用默认的吧
  4. 生成代码
    rails g scaffold blog title:string content:text 

  5. 启动程序
    rails s 

  6. 访问
    http://127.0.0.1:3000/blogs

  7. 看看我们的一个新的需求吧,我们需要假(软)删除 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
    

  8. 如何取出非默认的scoped的数据,也就是删除了的blog呢?RubyChina的做法
    @topics = Topic.unscoped.desc(:_id).includes(:user)...










Rails简单的项目研究笔记一

这个项目是    https://github.com/chucai/Ruby-on-Rails-Tutorial-by-Michael-Hartl--v3.2-      有比较网站的Rail...

Ubuntu下搭建Ruby on Rails+MongoDB+Redis环境

Ubuntu下搭建Ruby on Rails+MongoDB+Redis环境 Posted on August 20, 2011 安装说明: 本文是以root用户为例...

通过MongoMapper让程序在Rails 3.2上与MongoDB数据交互

参考资料:http://www.mongodb.org/display/DOCS/Rails+3+-+Getting+Started http://mongomapper.com/documenta...

我的第一个Ruby On Rails + MongoDB程序

最近想进一步学习一下MongoDB,而很久之前使用过ROR,正好也凑个机会重新拾起来。下面是建立第一个项目的过程。       主要参考文档:       1. Rails 3 - Getting s...
  • mydeman
  • mydeman
  • 2011年10月20日 08:02
  • 9319

rails3项目架构解析

用rails3做目前的这个网站项目,已经有半年多了。我们这个团队应该算是比较早使用rails3做项目的,3.0正式版刚发布就开始尝试了,在项目开发期间针对很多问题也做了一些探索。谈不上经验,更称不上最...

rails3项目解析——redis

在当前的web应用中,尤其是互动概念越来越大行其道的今天,为了加快网站的反应速度,提高用户体验,有些操作不能等到所有的后台处理完成之后再展现给用户,因此需要引入异步任务机制。典型的应用场景如用户注册完...

mongodb group aggregate项目实战笔记

  • 2016年02月29日 12:44
  • 18KB
  • 下载

Rails3 Ajax 筆記

Rails3 Ajax 筆記 Posted on 2011/07/25 by zetachang 最近都在忙 Rails app 的網頁前端,也花了點時間摸索 Rails 下的Aj...

Rails3 Ajax 笔记

Rails3 Ajax 笔记 Posted on 2011/07/25 by zetachang 最近都在忙Rails app 的网页前端,也花了点时间摸索Rails 下的Ajax。 ...

mongodb项目实战(初战)源代码

  • 2016年06月01日 11:08
  • 1.67MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:RubyChina源代码研究笔记:Rails3+Mongodb: 如何在Rails项目中整合Mongodb
举报原因:
原因补充:

(最多只允许输入30个字)