0
내가 2 개 Mongoid 클래스가 있습니다몽고 이드는 belongs_to/has_many 관계로 문서를 저장할 수 없습니다. 순환 종속성
을 :class Reservation
include Mongoid::Document
belongs_to :listing, class_name: 'Listing', inverse_of: 'Reservation'
end
class Listing
include Mongoid::Document
has_many :reservations, class_name: 'Reservation', foreign_key: :listing_id
end
내가 _id
과 #save!
를하여 목록을 검색하는 경우를, 오류가 다음
listing = Listing.find(...)
listing.save! #=> true
을 발생하지 나는 새로운 예약 obect를 초기화가
reservation = Reservation.find_or_initialize_by(params)
reservation.save! #=> error, exptected though, because I didn't set the listing_id yet
Mongoid::Errors::Validations:
message:
Validation of Reservation failed.
summary:
The following errors were found: Listing can't be blank
resolution:
Try persisting the document with valid data or remove the validations.
from /home/ec2-user/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/bundler/gems/mongoid-71c29a805990/lib/mongoid/persistable.rb:78:in `fail_due_to_validation!'
그래서 이전 예약의 ID를 예약 번호 :
로 지정합니다.reservation.listing_id = listing._id
reservation.listing_id #=> nil
listing_id 필드를 할당 할 수 없습니까?!
reservation.listing #=> returns the associated document no problem though..
reservation.listing.save! #=> error
Mongoid::Errors::Validations:
message:
Validation of Listing failed.
summary:
The following errors were found: Reservations is invalid
resolution:
Try persisting the document with valid data or remove the validations.
from /home/ec2-user/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/bundler/gems/mongoid-71c29a805990/lib/mongoid/persistable.rb:78:in `fail_due_to_validation!'
유효한 나열하지 않고 예약을 저장할 수 없습니다, 이게 뭔지 유효한 예약
없이 목록을 저장할 수 없습니다?!?!
내 하루 저장하세요 ...
감사합니다 쓸 수 있도록
또한, 직접 객체를 할당하는 것은, 너무 잘, 그리고 자주 쉽게! 나는 당신의 해결책에 뒤이어 나의 문제를 해결할 수 있었다. 그러나 나는 또한 고칠 필요가있는 끔찍한 실수를했다. 나는 elasticsearch를 사용하고 있으며 인덱싱에 사용되는'# listing_id' instance_method를 정의했습니다. 그건 협회의'# listing_id' 메쏘드와 상충되었습니다. 그러나 해결할 수있었습니다! – Shiyason
'listing_id'는 몽고이드에 의해 자동 생성됩니다 ː) – Geoffroy