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)가 발생했습니다. 

감사합니다.

댓글 없음:

댓글 쓰기