저는 오랫동안 PHP 개발자 였으므로 현재 Ruby On Rails를 배우려고하고 있습니다. 그래서 나는 페이지와 같은 자신 만의 커뮤니티를 만들고 있습니다.MongoDB와 Ruby On Rails 및 Mongomapper 플러그인 사용
저는 꽤 멀리 왔고 MySQL을 사용하여 사용자 모델 등을 만들었습니다.
그러나 나는 MongoDB에 대해 들어서 조금 더 살펴 봤는데 나는 친절하다고 느낍니다.
그래서 설정하고 레일과 MongoDB 간의 연결을 위해 mongomapper를 사용하고 있습니다.
이제 사이트의 뉴스 페이지에 사용 중입니다.
나는 또한 자신의 방명록이 포함 된 모든 사용자의 프로필 페이지를 가지고있어서 다른 사용자가 자신의 프로필로 와서 그들에게 약간의 메시지를 쓸 수 있습니다.
이제 사용자 모델을 MongoDB 사용을 시작하기 위해 MySQL을 사용하는 것으로 변경하는 것이 좋습니다.
각 사용자의 모델 설정 방법을 보여줌으로써 시작할 수 있습니다.
사용자 모델 :
class User < ActiveRecord::Base
has_one :guestbook, :class_name => "User::Guestbook"
방명록 모델 모델 :
class User::Guestbook < ActiveRecord::Base
belongs_to :user
has_many :posts, :class_name => "User::Guestbook::Posts", :foreign_key => "user_id"
그리고 방명록 게시물 모델 : 난 내 자신에 대한 이런 식으로 분할 한
class User::Guestbook::Posts < ActiveRecord::Base
belongs_to :guestbook, :class_name => "User::Guestbook"
편리하지만 지금은 MongoDB로 마이그레이션하려고 할 때 테이블을 만드는 방법을 모른다.
MongoDB가 EmbeddedDocument를 가질 수 있기 때문에 각 사용자에 대해 하나의 테이블을 갖고 그 테이블에 모든 방명록 항목에 대한 "열"을 갖고 싶습니다. 나는 방금 방명록을 가질 수 있도록 3 개의 테이블을 가지고있을 때마다 각 사용자마다 하나의 테이블을 가지고 있고 지금은 좋아하지 않기 때문에 이렇게하고 싶습니다.
사용자 모델 :
class User
include MongoMapper::Document
one :guestbook, :class_name => "User::Guestbook"
방명록 모델 모델 :
class User::Guestbook
include MongoMapper::EmbeddedDocument
belongs_to :user
many :posts, :class_name => "User::Guestbook::Posts", :foreign_key => "user_id"
그리고 방명록 게시물 모델 :
그래서 내 생각은 다음과 같이 그것을 가지고하는 것입니다
class User::Guestbook::Posts
include MongoMapper::EmbeddedDocument
belongs_to :guestbook, :class_name => "User::Guestbook"
그러나 그때 나는 하나의 문제를 생각할 수 있습니다. 그저 닉네임과 생년월일과 같은 사용자 정보를 가져오고 싶을 때 모든 사용자 방명록 게시물을 가져와야합니다. 그리고 각 사용자가 방명록에 수천 개의 게시물을 가지고 있다면 시스템을 가져올 수 있습니다. 아니면 내가 틀렸어?
내가 다른 방식으로해야한다고 생각합니까?
나 자신을 찾을 수 없으므로 mongomapper 쿼리를 써 주시겠습니까? 감사! – Lisinge
그래, 설명서, 몽고 마커의 어두운면. 가장 좋은 조언은 mongomapper의 테스트 사례를 자세히 읽는 것입니다. 관심있는 주제는 다음과 같습니다. http://github.com/jnunemaker/mongomapper/blob/master/test/unit/test_query.rb#L292-294 'User.find ('12341', : select => {: 방명록 => 0})' –
그래, mongomapper는 위대하다고 생각하지만 문서가 없으면 실제로 그걸 가져온다. 나는 당신이 그것을 언급했을 때 몽고 이드를 조금 보았다. 그리고 그것은 정말로 멋져 보인다. mongomapper로 바꾸라고 권하겠습니까? – Lisinge