3
내 postgres db에 UUID를 사용하는 기본 키가 있습니다. 기본적으로이 내가 명시 적으로 visit.id
내가 쉽게 경우 할 수있는 varchar
으로 캐스팅해야합니다Arel에 조인 열을 타입 변환하는 방법
Visit.joins(:payments)
# => operator does not exist: character varying = uuid`
:
class Visit
# primary key id: uuid
has_many :connections, as: :connectable
has_many :payments, through: :connections
end
class Connection #(polymorphic class joining visit and payment)
# columns connectable_type(string), connectable_id(string)
belongs_to :payments
belongs_to :connectable, polymorphic: true
end
class Payment
# primary key id: uuid
has_many :connections
end
내가 지불 모든 방문을 인출하려고
아래 샘플 설정은, 오류가 발생했습니다 내 join 문은 다음과 같이 문자열입니다.connections.connectable_id = visits.id::varchar
그러나 합성 가능성을 위해 Arel을 사용하고 있습니다. 내가 직접 Arel 이것을 캐스트 할 수 있습니다, 그래서 쉽게 뭔가를 할 수있는 방법에 대한
수있는 사람이 가이드는 :
이 주변에 연주하는 동안, 나는 ArelNamedFunction
에 대해 알게
join(connections_table).on(connections_table[:connectable_id].eq(cast_to_string(visits_table[:id])))
# where connections_table and visits_table are Arel tables