2011-09-08 5 views
0

그래서 나는 아주 간단 mongoid 클래스가 지속되지 않습니다. offer.accepted = true와 offer.save! 같은 작업을 수행하면 오류가 발생하지 않지만 작업이 완료되고 페이지를 새로 고치거나 변경 사항을 되돌릴 수 있습니다. 진행 방법을 모르겠습니다. 어떤 도움이 필요합니까?Mongoid 필드는

업데이트 : 내 업데이트 클래스에 offer_id 필드가 없어야합니까?

=> #<Update _id: 4e6933836066250375000033, _type: nil, updated_at: 2011-09-08 21:28:44 UTC, type: "offer", unread: false, topic_id: nil, post_id: nil, user_id: BSON::ObjectId('4e692ad3606625123b000001'), profile_id: nil, commenter_id: BSON::ObjectId('4e692b0b606625037500002a')> 

UPDATE2 : has_one의 버그 일 수 있습니다. 나는 단지 has_one 연결 대신에 문자열 필드에 업데이트의 ID를 저장하는 것으로 돌아 왔고 모든 것이 잘된 것처럼 보입니다.

답변

0

이 또한 GitHub issue으로보고되었습니다.

Mongoid 2.2.0 또는 2.2.0-stable 분기 (d6ace09c 현재)에서 문제를 재현 할 수 없습니다.

이 코드는 다음 offer가 성공적으로 업데이트되었는지 보여줍니다이 출력을 생산

class Offer 
    include Mongoid::Document 

    field :date, type: DateTime 
    field :accepted, type: Boolean 

    scope :accepted, where(accepted: true) 
    scope :denied, where(accepted: false) 

    belongs_to :from, class_name: 'User', inverse_of: :from_offers 
    belongs_to :to, class_name: 'User', inverse_of: :to_offers 
end 

class User 
    include Mongoid::Document 

    has_many :from_offers, :class_name => 'Offer', :inverse_of => :from 
    has_many :to_offers, :class_name => 'Offer', :inverse_of => :to 
end 

User.delete_all 
Offer.delete_all 

user1 = User.create 
user2 = User.create 
user3 = User.create 
puts "user1 ID = #{user1.id}" 
puts "user2 ID = #{user2.id}" 
puts "user3 ID = #{user3.id}" 

Offer.create(
    :date  => Date.today, 
    :accepted => false, 
    :from  => user1, 
    :to  => user2, 
) 

ap Offer.first.attributes 
Offer.first.update_attributes :accepted => true, :to => user3 
ap Offer.first.attributes 

:

user1 ID = 4e696a052b58af5dce000001 
user2 ID = 4e696a052b58af5dce000002 
user3 ID = 4e696a052b58af5dce000003 
{ 
     "_id" => BSON::ObjectId('4e696a052b58af5dce000004'), 
     "date" => 2011-09-08 04:00:00 UTC, 
    "accepted" => false, 
    "from_id" => BSON::ObjectId('4e696a052b58af5dce000001'), 
     "to_id" => BSON::ObjectId('4e696a052b58af5dce000002') 
} 
{ 
     "_id" => BSON::ObjectId('4e696a052b58af5dce000004'), 
     "date" => 2011-09-08 04:00:00 UTC, 
    "accepted" => true, 
    "from_id" => BSON::ObjectId('4e696a052b58af5dce000001'), 
     "to_id" => BSON::ObjectId('4e696a052b58af5dce000003') 
}