Ruby on Rails
몽고 이드
수색…
설치
첫째, 추가 Mongoid
당신에 Gemfile
:
gem "mongoid", "~> 4.0.0"
bundle install
를 실행하십시오. 또는 다음을 실행하십시오.
$ gem install mongoid
설치가 끝나면 생성기를 실행하여 구성 파일을 만듭니다.
$ rails g mongoid:config
(myapp)/config/mongoid.yml
파일을 생성합니다.
모델 만들기
다음을 실행하여 모델을 만듭니다 ( User
호출 가능).
$ rails g model User
app/models/user.rb
파일을 생성합니다.
class User
include Mongoid::Document
end
이것은 ( id
필드 일 뿐이지 만) 모델을 갖기 위해 필요한 것입니다. ActiveRecord
와는 달리, 마이그레이션 파일이 없습니다. 모델에 대한 모든 데이터베이스 정보는 모델 파일에 포함됩니다.
타임 스탬프는 생성 할 때 모델에 자동으로 포함되지 않습니다. created_at
및 updated_at
을 모델에 추가하려면 다음을 추가하십시오.
include Mongoid::Timestamps
include Mongoid::Document
처럼 아래의 모델에 추가하십시오 :
class User
include Mongoid::Document
include Mongoid::Timestamps
end
전지
Mongoid 문서 에 따라 16 개의 유효한 필드 유형이 있습니다.
- 정렬
- BigDecimal
- 부울
- 날짜
- 날짜 시간
- 흙손
- 해시시
- 정수
- BSON :: ObjectId
- BSON :: 이진
- 범위
- 정규 표현식
- 끈
- 상징
- 시각
- TimeWithZone
필드를 추가하려면 ( name
String
) 모델 파일에 다음을 추가하십시오.
field :name, type: String
기본값을 설정하려면 default
옵션을 전달하십시오.
field :name, type: String, default: ""
클래식 협회
Mongoid는 고전적인 ActiveRecord
연관을 허용합니다 :
- 일대일 :
has_one
/belongs_to
- 일대 다 :
has_many
/belongs_to
- 다 대다 :
has_and_belongs_to_many
연결을 추가하려면 (User has_many
posts라고 말하면됩니다) User
모델 파일에 다음을 추가 할 수 있습니다.
has_many :posts
그리고 이것을 당신의 Post
모델 파일에 저장하세요 :
belongs_to :user
이것은 추가합니다 user_id
당신에 필드를 Post
, 모델 추가 user
당신에게 방법을 Post
클래스 및 추가 posts
당신에게 방법을 User
클래스입니다.
임베디드 협회
몽고 이드는 임베디드 협회를 허용합니다.
- 일대일 :
embeds_one
/embedded_in
- 일대 다 :
embeds_many
/embedded_in
연결을 추가하려면 (사용자 embeds_many
주소라고 말하면 됨) User
파일에 다음을 추가하십시오.
embeds_many :addresses
이 Address
모델 파일에 :
embedded_in :user
이 포함됩니다 Address
사용자의 User
추가 모델 addresses
당신에게 방법을 User
클래스입니다.
데이터베이스 호출
Mongoid는 가능한 경우 ActiveRecord
와 유사한 구문을 사용하려고 시도합니다. 그것은 이러한 호출 (그리고 더 많은 것들)을 지원합니다.
User.first #Gets first user from the database
User.count #Gets the count of all users from the database
User.find(params[:id]) #Returns the user with the id found in params[:id]
User.where(name: "Bob") #Returns a Mongoid::Criteria object that can be chained
#with other queries (like another 'where' or an 'any_in')
#Does NOT return any objects from database
User.where(name: "Bob").entries #Returns all objects with name "Bob" from database
User.where(:name.in => ['Bob', 'Alice']).entries #Returns all objects with name "Bob" or "Alice" from database
User.any_in(name: ["Bob", "Joe"]).first #Returns the first object with name "Bob" or "Joe"
User.where(:name => 'Bob').exists? # will return true if there is one or more users with name bob