레이블이 has_many인 게시물을 표시합니다. 모든 게시물 표시
레이블이 has_many인 게시물을 표시합니다. 모든 게시물 표시

2013년 12월 18일 수요일

[ROR] mongoid에서 belongs_to, has_many를 관계를 명시했음에도 에러가 발생

안녕하세요 belhyun입니다. 오늘 개발을 하면서 아래와 같이 belongs_to 관계를 명시했음에도 에러가 발생했습니다.
tweet = Tweet.where(uuid: params[:tweet_uuid])
if !UserTweet.where(user_desc: params[:user_desc],
                    type: params[:type],
                    tweet_uuid: params[:tweet_uuid]).exists?
    tweet.user_tweets.create(Hash[params])
    self.success
end
다음과 같이 관계가 명시되었습니다.
belongs_to :tweet
이유는
tweet = Tweet.where(uuid: params[:tweet_uuid])
에 있습니다. mongoid에서 where 조건을 사용하면 그 리턴값으로 #"406437296649404416"} options: {} class: Tweet embedded: false> 위와 같은 Criteria가 리턴됩니다. 
반면 find_by를 사용했을 경우 다음과 같이 리턴됩니다. # mongoid 공식 문서(http://mongoid.org/en/mongoid/docs/querying.html)에는 다음과 같이 기술되어 있습니다. "mongoid에서 모든 쿼리는 criteria이다. criteria는 몽고 DB의 실제 쿼리로 늦어지고 연결되는 쿼리이다. criteria는 필요에 의해 사용된다." 

그렇기 때문에 build나 create하는 과정에서 계속 에러(no method)가 발생했습니다. 

감사합니다.