Vì vậy, tôi có một hai mô hình như thế nàyTrong Rails, Sử dụng Mongoid, Làm cách nào để tìm tất cả các Mô hình có tham chiếu has_one hợp lệ (không phải là nil)?
class ModelParent
include Mongoid::Document
field :name, :type => String
has_one :model_child
end
class ModelChild
include Mongoid::Document
field :name, :type => String
belongs_to :model_parent
end
Giả sử tôi có một thể tiếp tục tồn tại của ModelParent gọi mp trong đường ray console
mc = mp.create_model_child(:name=>"child")
và sau đó làm
mp.model_child
nó trả về đối tượng hợp lệ
tuy nhiên nếu tôi tìm kiếm nó như này:
ModelParent.where(:model_child.ne => nil).length
nó trả về 0
tôi đã cố gắng tạo model_child và sau đó gán cho nó, cũng sử dụng build_model_child(), và mỗi phương pháp cho thấy model_child rõ ràng là trong các phụ huynh, tuy nhiên truy vấn cho không nil (.ne) không tìm thấy tất cả ModelParents có con.
Tôi đang làm gì sai?
Cập nhật:
Trả lời câu hỏi của riêng tôi. Tôi vẫn không chắc chắn lý do tại sao: model_child.ne => nil không được làm việc, tuy nhiên ...
tôi giải quyết vấn đề bằng cách mã hóa một cái gì đó như thế này:
def self.with_child
user_ids = ModelChild.all.only(:model_parent_id).map(&:model_parent_id)
return ModelParent.where(:_id.in => user_ids).all
end
Cảm ơn rất nhiều, điều đó có tác dụng! – KDKotU