Skip to content

Instantly share code, notes, and snippets.

@SaitoWu
Created March 18, 2011 20:42
Show Gist options
  • Save SaitoWu/876798 to your computer and use it in GitHub Desktop.
Save SaitoWu/876798 to your computer and use it in GitHub Desktop.
some mongoid cheet-sheet
require 'mongoid'
Mongoid.configure do |config|
name = "db"
host = "localhost"
config.master = Mongo::Connection.new.db(name)
config.slaves = [
Mongo::Connection.new(host, 27017, :slave_ok => false).db(name)
]
config.persist_in_safe_mode = false
end
class User
include Mongoid::Document
include Mongoid::Timestamps
field :name
embeds_one :address
references_many :posts, :inverse_of => :users
end
class Address
include Mongoid::Document
field :street
field :city
field :state
field :post_code
embedded_in :user, :inverse_of => :address
end
class Post
include Mongoid::Document
field :title
field :content
referenced_in :users
end
#create update and destroy
poor_man = User.create(:name=>'saito')
puts "poor_man.name : "+poor_man.name #=> saito
poor_man.update_attributes(:name=>'Saito')
puts "updated poor_man.name : "+poor_man.name #=> Saito
poor_man.destroy
#complex
user = User.new(:name=>'saito')
post = Post.new(:title=>"hello",:content=>"world")
#embed
user.address = Address.new(:city=>"HZ",:state=>"US")
#association
user.posts << post
#save
user.save
post.save
User.find(:all).each do |user|
user.posts.each do |post|
puts "#{user.name}'s post title : " + post.title
puts "#{user.name}'s post cotent : " + post.content
end
puts "#{user.name}'s address city : " + user.address.city
puts "#{user.name}'s address city : " + user.address.state
end
#destroy also delete association & embed
user.destroy
Post.delete_all
User.delete_all
p "Post count : "+Post.count.to_s
p "User count : "+User.count.to_s
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment