나는 효과가 있지만 시끄럽지는 않은 방법을 썼습니다. 내가 더 나은 길을 놓친 건지 궁금 하네.다형성 연관에서 특정 유형의 모든 하위 항목을 얻는 방법
나는 이와 같이 설정된 다형성 연관이 있습니다.
class Employee < ActiveRecord::Base
has_many :phones, as: :phoneable
end
class Client < ActiveRecord::Base
has_many :phones, as: :phoneable
end
class Phone < ActiveRecord::Base
belongs_to :phoneable, polymorphic: true
end
내 폰 표는 표준 phoneable_id:integer
및 phoneable_type:string
열이 있습니다.
내가하고 싶은 일은 이전에 선택한 직원 그룹의 모든 전화를 가져 오는 것입니다 (예 :
employees = Employee.where role: 'peon'
이 내가 다음과 같은 내 전화 쿼리를 작성합니다 정상적인 has_many
관계라면,
Phone.where employee_id: employees
내가 아니라 내 쿼리를 작성했습니다 다형성의 관계에서이 작업을 수행하려면;
Phone.where phoneable_type: 'employee', phoneable_id: employees
이 작동하지만, 명시 적으로 phoneable_type
을 진술보다이 일을 더 나은 방법이 있어야합니다 같은 느낌. Rails는 직원들과 함께 제시 될 때 자동으로이를 수행 할 수있는 방법이 있습니까? 아니면 단순화를 위해 과도하게 도달하고 있습니까?
그렇습니다. 그와 같은 맵을 사용하면 엄청난 수의 데이터베이스 요청이 발생하고 잠재적으로 매우 느릴 수 있습니다. 나는 항상 데이터베이스 전용 솔루션을 찾고있다. – brad