class Person < ActiveRecord::Base
has_many :pets
scope :with_dog, join(:pets).where("pets.type = 'Dog'")
scope :without_pets ???????????????????????????????????
end
class Pet < ActiveRecord::Base
belongs_to :people
end
애완 동물이없는 사람을 반환하는 범위를 Person 모델에 추가하고 싶습니다. 어떤 아이디어? 나는 이것이 명백한 것처럼 느낀다. 그러나 그것은 나를 지금 벗어나고있다. 이 같은레일에 연결된 레코드가없는 레코드 찾기 3
결과 SQL : 여기 내가 사용하는 코드의 개조 버전입니다. 사람을 선택 *,'왼쪽 persons' 외부로부터 pets.id 어디 persons.id = pets.person_id WHERE'persons' 애완 동물을 가입 할 수 있습니다. 'deleted' = 0 AND (pets.id가 null 임) – Shagymoe
죄송합니다! 나는 그 조인을 잘못 입력했다. "... person.id = pets.person_id"가 아니라 "... person.id = ..."가 아니어야합니다. –
select ('persons. *, pets.id')에 ", pets.id"가 필요합니까? LEFT OUTER JOIN은 'includes'의 목적이 아니지만 select ('persons. *, pets.id as pet_id') – mkirk