rails 4.0.2 + mongoid 对mongodb进行增删改查

作者: _nil
发布时间:2015-06-24 11:12:51

新建项目

rails new mongoid_app --skip-active-record --skip-test-unit --skip-bundle        create          create  README.rdoc        create  Rakefile        create  config.ru        create  .gitignore        create  Gemfile        create  app        create  app/assets/javascripts/application.js        create  app/assets/stylesheets/application.css        create  app/controllers/application_controller.rb        create  app/helpers/application_helper.rb        create  app/views/layouts/application.html.erb        create  app/assets/images/.keep        create  app/mailers/.keep        create  app/models/.keep        create  app/controllers/concerns/.keep        create  app/models/concerns/.keep        create  bin        create  bin/bundle        create  bin/rails        create  bin/rake        create  config        create  config/routes.rb        create  config/application.rb        create  config/environment.rb        create  config/environments        create  config/environments/development.rb        create  config/environments/production.rb        create  config/environments/test.rb        create  config/initializers        create  config/initializers/backtrace_silencers.rb        create  config/initializers/filter_parameter_logging.rb        create  config/initializers/inflections.rb        create  config/initializers/mime_types.rb        create  config/initializers/secret_token.rb        create  config/initializers/session_store.rb        create  config/initializers/wrap_parameters.rb        create  config/locales        create  config/locales/en.yml        create  config/boot.rb        create  db        create  db/seeds.rb        create  lib        create  lib/tasks        create  lib/tasks/.keep        create  lib/assets        create  lib/assets/.keep        create  log        create  log/.keep        create  public        create  public/404.html        create  public/422.html        create  public/500.html        create  public/favicon.ico        create  public/robots.txt        create  tmp/cache        create  tmp/cache/assets        create  vendor/assets/javascripts        create  vendor/assets/javascripts/.keep        create  vendor/assets/stylesheets        create  vendor/assets/stylesheets/.keep

修改Gemfile

source 'https://rubygems.org'    # Bundle edge Rails instead: gem 'rails', github: 'rails/rails'  gem 'rails', '4.0.2'  gem 'bson_ext'  gem 'mongo'  gem 'mongoid', github: 'mongoid/mongoid'    # Use SCSS for stylesheets  gem 'sass-rails', '~> 4.0.0'  gem 'uglifier', '>= 1.3.0'  gem 'coffee-rails', '~> 4.0.0'  gem 'jquery-rails'  gem 'turbolinks'  gem 'jbuilder', '~> 1.2'  group :doc do    gem 'sdoc', require: false  end

运行bundle install

bundle install  Updating git://github.com/mongoid/mongoid.git  Fetching gem metadata from https://rubygems.org/...........  Fetching additional metadata from https://rubygems.org/..  Resolving dependencies...  Using rake (10.1.1)  Using i18n (0.6.9)  Using minitest (4.7.5)  Using multi_json (1.8.2)  Using atomic (1.1.14)  Using thread_safe (0.1.3)  Using tzinfo (0.3.38)  Using activesupport (4.0.2)  Using builder (3.1.4)  Using erubis (2.7.0)  Using rack (1.5.2)  Using rack-test (0.6.2)  Using actionpack (4.0.2)  Using mime-types (1.25.1)  Using polyglot (0.3.3)  Using treetop (1.4.15)  Using mail (2.5.4)  Using actionmailer (4.0.2)  Using activemodel (4.0.2)  Using activerecord-deprecated_finders (1.0.3)  Using arel (4.0.1)  Using activerecord (4.0.2)  Using bson (2.0.0)  Using bson_ext (1.5.1)  Using bundler (1.5.1)  Using coffee-script-source (1.6.3)  Using execjs (2.0.2)  Using coffee-script (2.2.0)  Using thor (0.18.1)  Using railties (4.0.2)  Using coffee-rails (4.0.1)  Using connection_pool (1.2.0)  Using hike (1.2.3)  Using jbuilder (1.5.3)  Using jquery-rails (3.0.4)  Using json (1.8.1)  Using mongo (1.3.1)  Using optionable (0.2.0)  Using moped (2.0.0.beta4)  Using origin (2.0.0)  Using mongoid (4.0.0.alpha1) from git://github.com/mongoid/mongoid.git (at master)  Using tilt (1.4.1)  Using sprockets (2.10.1)  Using sprockets-rails (2.0.1)  Using rails (4.0.2)  Using rdoc (3.12.2)  Using sass (3.2.13)  Using sass-rails (4.0.1)  Using sdoc (0.3.20)  Using turbolinks (2.1.0)  Using uglifier (2.4.0)  Your bundle is complete!  Use `bundle show [gemname]` to see where a bundled gem is installed.

生成mongoid数据库配置文件

rails generate mongoid:config        create  config/mongoid.yml

在这里不对mongoid.yml进行任何更改(假设已安装MongoDB并以默认设置启动),顺便贴一下生成的mongoid.yml 的文件内容

 1 development:   2   # Configure available database sessions. (required)   3   sessions:   4     # Defines the default session. (required)   5     default:   6       # Defines the name of the default database that Mongoid can connect to.   7       # (required).   8       database: mongoid_app_development   9       # Provides the hosts the default session can connect to. Must be an array  10       # of host:port pairs. (required)  11       hosts:  12         - localhost:27017  13       options:  14         # Change the default write concern. (default = { w: 1 })  15         # write:  16         # w: 1  17   18         # Change the default consistency model to primary, secondary.  19         # 'secondary' will send reads to secondaries, 'primary' sends everything  20         # to master. (default: primary)  21         # read: secondary_preferred  22   23         # How many times Moped should attempt to retry an operation after  24         # failure. (default: 30)  25         # max_retries: 30  26   27         # The time in seconds that Moped should wait before retrying an  28         # operation on failure. (default: 1)  29         # retry_interval: 1  30   # Configure Mongoid specific options. (optional)  31   options:  32     # Enable the identity map, needed for eager loading. (default: false)  33     # identity_map_enabled: false  34   35     # Includes the root model name in json serialization. (default: false)  36     # include_root_in_json: false  37   38     # Include the _type field in serializaion. (default: false)  39     # include_type_for_serialization: false  40   41     # Preload all models in development, needed when models use  42     # inheritance. (default: false)  43     # preload_models: false  44   45     # Protect id and type from mass assignment. (default: true)  46     # protect_sensitive_fields: true  47   48     # Raise an error when performing a #find and the document is not found.  49     # (default: true)  50     # raise_not_found_error: true  51   52     # Raise an error when defining a scope with the same name as an  53     # existing method. (default: false)  54     # scope_overwrite_exception: false  55   56     # Use Active Support's time zone in conversions. (default: true)  57     # use_activesupport_time_zone: true  58   59     # Ensure all times are UTC in the app side. (default: false)  60     # use_utc: false  61 test:  62   sessions:  63     default:  64       database: mongoid_app_test  65       hosts:  66         - localhost:27017  67       options:  68         read: primary  69         # In the test environment we lower the retries and retry interval to  70         # low amounts for fast failures.  71         max_retries: 1  72         retry_interval: 0

使用scaffold脚手架生成测试程序

rails generate scaffold User name:string email:string        invoke  mongoid        create    app/models/user.rb        invoke  resource_route         route    resources :users        invoke  scaffold_controller        create    app/controllers/users_controller.rb        invoke    erb        create      app/views/users        create      app/views/users/index.html.erb        create      app/views/users/edit.html.erb        create      app/views/users/show.html.erb        create      app/views/users/new.html.erb        create      app/views/users/_form.html.erb        invoke    helper        create      app/helpers/users_helper.rb        invoke    jbuilder        create      app/views/users/index.json.jbuilder        create      app/views/users/show.json.jbuilder        invoke  assets        invoke    coffee        create      app/assets/javascripts/users.js.coffee        invoke    scss        create      app/assets/stylesheets/users.css.scss        invoke  scss        create    app/assets/stylesheets/scaffolds.css.scss

顺便也贴一下生成的model文件 user.rb

1 class User  2   include Mongoid::Document  3   field :name, type: String  4   field :email, type: String  5 end
运行测试服务器
rails server  => Booting WEBrick  => Rails 4.0.2 application starting in development on http://0.0.0.0:3000  => Run `rails server -h` for more startup options  => Ctrl-C to shutdown server  [2013-12-30 16:46:00] INFO  WEBrick 1.3.1  [2013-12-30 16:46:00] INFO  ruby 2.0.0 (2013-06-27) [x86_64-Linux]  [2013-12-30 16:46:00] INFO  WEBrick::HTTPServer#start: pid=9442 port=3000

访问地址http://localhost:3000/users 并添加一条数据

运行mongo查看数据是否添加成功

mongo  MongoDB Shell version: 2.4.6  connecting to: test  > show dbs  mongoid_app_development    0.203125GB  test    (empty)  > use mongoid_app_development  switched to db mongoid_app_development  > show collections  system.indexes  users  > db.users.find()  { "_id" : ObjectId("52c1330a75627524e2000000"), "name" : "grj", "email" : "grj@example.com" }  > exit  bye

 下载: mongoid_app.rar

标签: Go MongoDB Rails
来源:http://www.cnblogs.com/grj1046/p/3498081.html

推荐: