안녕하세요 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)가 발생했습니다.
감사합니다.