sql >> Databasteknik >  >> RDS >> PostgreSQL

Relationen skickas till #eller måste vara strukturellt kompatibel. Inkompatibla värden:[:referenser]

Det finns ett känt problem om det på Github.

Enligt denna kommentar kanske du vill åsidosätta structurally_incompatible_values_for_or för att lösa problemet:

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

Det finns också alltid ett alternativ att använda SQL:

@items
  .joins(:orders)
  .where("orders.user_id = ? OR items.available = true", current_user.id)


  1. SQL SERVER – Ett knep för att hantera dynamisk SQL för att undvika SQL Injection Attack?

  2. Så här löser du ORA-02014:kan inte välja FÖR UPPDATERING från vy med DISTINCT, GROUP BY

  3. Använder MariaDB

  4. Ibland KAN man göra en kolumn större på sin plats