Điều này có vẻ khá đơn giản nhưng tôi không thể làm cho nó bật lên trên Google.Đường ray tìm bản ghi với 0 hồ sơ has_many liên quan
Nếu tôi có:
class City < ActiveRecord::Base
has_many :photos
end
class Photo < ActiveRecord::Base
belongs_to :city
end
Tôi muốn tìm tất cả các thành phố mà không có ảnh. Tôi rất muốn có thể gọi một cái gì đó như ...
City.where(photos.empty?)
... nhưng điều đó không tồn tại. Vì vậy, làm thế nào để bạn làm loại truy vấn?
Cập nhật: Có bây giờ tìm thấy câu trả lời cho câu hỏi ban đầu, tôi tò mò, làm thế nào để bạn xây dựng nghịch đảo?
IE: nếu tôi muốn tạo ra những phạm vi hoạt động:
scope :without_photos, includes(:photos).where(:photos => {:city_id=>nil})
scope :with_photos, ???
Kể từ khi tôi phát hiện ra câu hỏi này (http://stackoverflow.com/q/5319400/417872) Tôi đoán đây có thể được đóng . Nó có lẽ đáng giá để có thêm một cách để tìm thấy điều này trong google mặc dù, loại điều này là khó để mô tả và do đó khó tìm kiếm. – Andrew
Trong Rails 4, bạn có thể sử dụng phương thức '.not' mới cho nghịch đảo. 'City.includes (: photos) .where.not (ảnh: {city_id: nil})' –
Bản sao có thể có của [Muốn tìm các bản ghi không có bản ghi liên quan trong Rails 3] (https://stackoverflow.com/questions/ 5319400/muốn tìm-hồ sơ-với-không-liên kết-hồ sơ-trong-đường ray-3) –