[SQL] #OR에 전달 관계는 구조적으로 호환되어야합니다. 호환 값 : : 참고 문헌]
SQL#OR에 전달 관계는 구조적으로 호환되어야합니다. 호환 값 : : 참고 문헌]
나는 두 개의 쿼리를 가지고, 나는이 필요하거나 그들 사이에, 즉 내가 첫 번째 또는 두 번째 쿼리 중 하나에 의해 반환되는 결과를 원한다.
첫 번째 쿼리는 가능한 모든 항목을 유도 할 수있는 간단한 ()입니다.
@items = @items.where(available: true)
두 번째는 ()가 가입 포함하고 현재 사용자의 항목을 제공합니다.
@items =
@items
.joins(:orders)
.where(orders: { user_id: current_user.id})
나는 레일 '또는 다양한 형태를 포함하여 () 메서드 이러한 결합을 시도 :
@items =
@items
.joins(:orders)
.where(orders: { user_id: current_user.id})
.or(
@items
.joins(:orders)
.where(available: true)
)
하지만이 오류로 계속 실행하고 나는 그것을 해결하는 방법을 모르겠어요.
Relation passed to #or must be structurally compatible. Incompatible values: [:references]
해결법
-
==============================
1.Github에서에 그것에 대해 알려진 문제가 있습니다.
Github에서에 그것에 대해 알려진 문제가 있습니다.
이 댓글에 따르면, 당신은 문제를 극복하기 위해 structurally_incompatible_values_for_or를 오버라이드 (override) 할 수 있습니다 :
def structurally_incompatible_values_for_or(other) Relation::SINGLE_VALUE_METHODS.reject { |m| send("#{m}_value") == other.send("#{m}_value") } + (Relation::MULTI_VALUE_METHODS - [:eager_load, :references, :extending]).reject { |m| send("#{m}_values") == other.send("#{m}_values") } + (Relation::CLAUSE_METHODS - [:having, :where]).reject { |m| send("#{m}_clause") == other.send("#{m}_clause") } end
또한 사용 SQL에 대한 옵션은 항상있다 :
@items .joins(:orders) .where( "orders.user_id = ? OR items.available = true", current_user.id )
-
==============================
2.당신은 오류를 방지하기 위해이 옛 방식으로 쿼리를 작성할 수 있습니다
당신은 오류를 방지하기 위해이 옛 방식으로 쿼리를 작성할 수 있습니다
@items = @items.joins(:orders).where("items.available = ? OR orders.user_id = ?", true, current_user.id)
희망이 도움이!
from https://stackoverflow.com/questions/40742078/relation-passed-to-or-must-be-structurally-compatible-incompatible-values-r by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] ORA-00942 : 테이블 또는 뷰 (때 별도의 SQL 작업을하지만, 오라클 함수 내에서 작업을하지 않는) 존재하지 않습니다 (0) | 2020.07.07 |
---|---|
[SQL] PDO SQL 상태 "00000"하지만 여전히 오류? [복제] (0) | 2020.07.07 |
[SQL] MySQL의의에 SQL 서버 상당 EXPLAIN (0) | 2020.07.07 |
[SQL] 한 셀의 값을 검색하기가 ExecuteReader () 메소드를 사용하는 방법 (0) | 2020.07.07 |
[SQL] 나는 T-SQL 그룹으로 어떻게 사용합니까 (0) | 2020.07.07 |