2011-10-28 20 views
5

Chúng tôi đang sử dụng mongodb 2.0.0, mongo gem 1.4.1, mongo_mapper 0.9.2, đường ray 3.0.6.Bỏ đặt lỗi hoạt động cho mô hình MongoMapper, không thể xóa/xóa khóa khỏi mô hình

Chúng tôi yêu MongoMapper, nhưng chúng tôi cần giúp giải quyết một vấn đề khó chịu: chúng tôi có một chìa khóa được chuyển từ một số thử nghiệm, nhưng gọi obj.unset không làm bất cứ điều gì.

Cụ thể, chúng tôi đang cố gắng loại bỏ khóa "id" (không phải "_id") vì nó khiến MM xử lý obj.id khác với obj._id mà chúng tôi không muốn.

Sau khi thanh toán bù trừ ra khỏi cơ sở dữ liệu, chúng tôi chạy các lệnh này từ một bộ điều khiển mà không làm gì khác: (Chúng tôi cũng đã cố gắng chạy cùng mã từ đường ray giao diện điều khiển, nhưng nó cũng thất bại.)

logger.info "#{Game.keys.keys.inspect}" 
Game.unset({}, :id) 
logger.info "#{Game.keys.keys.inspect}" 
Game.unset(:id) 
logger.info "#{Game.keys.keys.inspect}" 

Output:

phím
["jackpot", "players", "created_at", "puzzles", "ended_at", "player_index", "updated_at", "log", "_id", "id", "join_code", "puzzle_index"] 
["jackpot", "players", "created_at", "puzzles", "ended_at", "player_index", "updated_at", "log", "_id", "id", "join_code", "puzzle_index"] 
["jackpot", "players", "created_at", "puzzles", "ended_at", "player_index", "updated_at", "log", "_id", "id", "join_code", "puzzle_index"] 

hiện tại được xác định trong mô hình trò chơi của chúng tôi:

key :players, Array, :default => [] 
    key :player_index, Integer, :default => 0 
    key :puzzles, Array, :default => [] 
    key :puzzle_index, Integer, :default => 0 
    key :join_code, String, :default => nil 
    key :jackpot, Integer, :default => 0 
    key :log, Array, :default => [] 
    key :created_at, Time 
    key :updated_at, Time 
    key :ended_at, Time, :default => nil 

Trợ giúp?

Cảm ơn!

+1

Tại sao bạn có thể vẫn ở trên Mongo 1.4.1? Có một số lỗi và vấn đề hiệu suất trong phiên bản đó. Bước đầu tiên dường như nâng cấp lên phiên bản mới nhất của cơ sở dữ liệu và MM và sau đó xem sự cố của bạn có tiếp diễn hay không. –

+0

Tôi nghĩ "mongo" đề cập đến phiên bản đá quý, 1.4.1 gần đây. Ngoài ra, câu hỏi này đã được trả lời trong danh sách gửi thư: http://groups.google.com/group/mongomapper/browse_thread/thread/20ea194868195c3e TL; DR unset chỉ hoạt động trên cơ sở dữ liệu, nhưng MM luôn ghi nhớ những phím mà nó đã xem và lưu tài liệu mới với chúng. Cần tải lại tài liệu và/hoặc khởi động lại máy chủ. Liên quan đến vấn đề # 195 https://github.com/jnunemaker/mongomapper/issues/195 –

+0

Cảm ơn cả hai. Vâng, "mongo" là đá quý. Chúng tôi sẽ cập nhật câu hỏi để làm rõ điều này. Gà nhựa, chúng tôi đã thử khởi động lại máy chủ ứng dụng và máy chủ Mongo, nhưng có lẽ chúng tôi cũng cần phải tải lại tài liệu. Cảm ơn một lần nữa! – Crashalot

Trả lời

0

Điều này khiến chúng tôi không thể đăng câu trả lời vì điều này củng cố trạng thái của chúng tôi là "morons, idiots, fools, noobs, Jay Leno", nhưng trong trường hợp bất kỳ ai khác gặp phải vấn đề tương tự: môi trường dev, dir mô hình trong môi trường sản xuất chứa các tệp thử nghiệm cũ ... chứa một mô hình cũ có khóa "id".

Rõ ràng, việc xóa các tệp cũ và các mô hình cũ đã giải quyết mọi thứ, mặc dù chúng tôi đã để lại vết bầm tím trên đầu của chúng tôi và đầu của chúng tôi.

+0

:) Đây là một đầu tốt đẹp cho một người nào đó gỡ lỗi một mongodb. – three

Các vấn đề liên quan