2012-03-23 23 views
5

khi sử dụng id tài liệu như tiêu chí duy nhất trong truy vấn của tôi là sự khác biệt giữa những gì:Mongoid nơi vs find khi sử dụng id như tiêu chí

Board.only(:_id).find(params[:board_id]) 

Board.where(_id: params[:board_id]).only(:_id) 

điều duy nhất tôi đã nhận thấy là in kết quả dưới dạng json khi sử dụng vị trí mà nó bao quanh kết quả trong dấu ngoặc vuông

Trả lời

9

find trả về một tài liệu.

where trả về một mảng tài liệu phù hợp với tiêu chí.

4

Để thêm vào câu trả lời của Kyle:

Nếu phù hợp với kỷ lục không tìm thấy: find ném ngoại lệ, where lợi nhuận trống đếm được.

+3

Hành vi này phụ thuộc vào cài đặt raise_not_found_error của Mongoid (mặc định là đúng). Xem http://mongoid.org/en/mongoid/docs/installation.html –

+0

@PetrGladkikh: vâng, cảm ơn vì đã chỉ ra điều này. –

0

Câu trả lời trước là chính xác, tôi sẽ chỉ thêm rằng để tìm một bản ghi mà không gây ra lỗi, tương đương với findwhere.first. Trong trường hợp của bạn

Board.where(_id: params[:board_id]).first.only(:_id) 
Các vấn đề liên quan