그래서 ActiveRecord가 이것을 어떻게 처리하는지 혼란스럽고 누군가가 나에게 약간의 통찰력을 줄 수 있기를 바랍니다.다형성 관계 혼동
다형성 관계가있는 테이블이 있습니다. 우리는 테이블 선택이라고 부를 것입니다. 거기에서 나는 정의 : 나는 두 가지 모델이
belongs_to :chooseable, polymorphic: true
,의 한 영화와 다른 연극을 호출 할 수 있습니다. 거기에, 나는이 : has_many :choices as: chooseable, dependent: destroy
다형성 관계 모델에서
나는 두 개의 범위가 : 나는 users.choices.with_movies 말하는 경우
scope :with_movies, -> {
includes(:movies)
.where("chooseable_type": "Measure")
}
scope :with_shows, -> {
includes(:shows)
.where(shows: { hidden: false })
}
무엇, 나에게 혼란 것은,이다, 나는 떠나 조건이, AR 나를 balks가 표시된 chooseable_type 아웃 :
Unknown column 'choices.chooseable_type' in 'where clause': SELECT `movies`.* FROM `movies` WHERE `choices`.`chooseable_type` = 'Movie' AND `movies`.`id` IN (728)
는하지만, 두 번째 범위 with_shows에, 나는 chooseable_type를 정의 할 필요가 없습니다 - 그것을 잘 작동합니다. 더 혼란스러운 것은 where 절을 제거하면 with_shows가 작동하지 않는다는 것입니다.
두 번째 범위의 where 절이 올바른 쿼리를 생성 할 수있는 이유를 이해하지 못한다.
는, 그것은하지 않더라도, 쇼 테이블에 chooseable_type 절을 적용 할 알고 명시 적으로 말해? 그게 나에게 이상해. – Siraris
'puts with_shows.to_sql'을 실행하여 쿼리 작성을보십시오. – mudasobwa