12/08/2018, 15:09

Sử dụng MongoDB trong Rails app

MongoDb là một NoSQL engine được giới thiệu từ năm 2009. Trong MongoDB thì chúng ta không phải làm việc và bảng và các dòng như trong SQL nữa, thay vào đó là collections và documents. Nó được thiết kế để xử lý với khối lượng dữ liệu lớn, mềm dẻo, dễ dàng mở rộng và hiệu quả. Installation MongoDB ...

MongoDb là một NoSQL engine được giới thiệu từ năm 2009. Trong MongoDB thì chúng ta không phải làm việc và bảng và các dòng như trong SQL nữa, thay vào đó là collections và documents. Nó được thiết kế để xử lý với khối lượng dữ liệu lớn, mềm dẻo, dễ dàng mở rộng và hiệu quả.

Installation MongoDB

Ở bài này mình sẽ giới thiệu trên Ubuntu nhé.

  • Nếu bạn dùng Ubuntu 16.04 thì tham khảo link này https://www.howtoforge.com/tutorial/install-mongodb-on-ubuntu-16.04/
  • Còn với Ubuntu 14: https://www.howtoforge.com/tutorial/install-mongodb-on-ubuntu-14.04/

Mặc định thì Service của mongoDB sẽ start sau khi cài đặt xong. Để kiểm tra thì bạn sử dụng câu lệnh

sudo service mongod status Nếu bạn thấy dòng chữ Active: active (running) là okie đấy. Tương tự sudo service mongod stop để tắt, sudo service mongod restart nếu bạn muốn khởi động lại.

Sử dụng MongoDB thay cho SQLite mặc định của Rails

Để đi vào cụ thể các sử dụng MongoDB trong rails app như thế nào thì mình sẽ tạo một app demo để các bạn thấy rõ. Và trong app này minh sẽ không dùng database ralationship nữa nên sẽ bỏ tất cả ActiveRecord đi với option --skip-active-record rails new demo --skip-active-record để sử dụng được mongoDB trong rails thì cần một gem đó là Mongoid, đây là một ODM (Object Document Mapper) Framework cho MongoDB. bạn mở Gemfile ra vào thêm gem này vào nhé.

gem "mongoid", git: 'git://github.com/mongoid/mongoid.git'

Sau đó trong terminal gõ lệnh bundle để install. Để sử dụng như relational BD SQLite thì bạn cần phải thêm một file config nữa. rails g mongoid:config Bạn sẽ thấy một file config được tạo ra ở config/mongoid.yml. Không cần phải thay đổi gì cả defaul những gì nó tạo ra cũng đủ dùng rồi.

Giờ tạo một scaffold book với các properites title, author, price để làm việc nào. rails g scaffold book title author price Khi bạn mở file book.rb trong app/models/book.rb bãn sẽ thấy khác hoàn toàn so với việc sử dụng DB relational

class Book
  include Mongoid::Document
  field :title, type: String
  field :author, type: String
  field :price, type: String
end

Không còn phải extend lại ActiveRecord nữa, từ nay bạn cũng chẳng cần đến các file migration mỗi khi cần thay đổi structure của DB nữa. Nếu bạn muốn thêm một trường mới, đơn giản chỉ khai báo vào trong model thôi thêm vào view để tương tác với trường đó. giờ bạn hãy chạy rails s xem thế nào             </div>
            
            <div class=

0