Bir PostgreSQL 9.6 veritabanıyla bir Rails 5 uygulamasına sahibim.Dizi sütunu bir veya daha fazla değer içeriyorsa sorgula
uygulama olduğu gibi schema.rb
ile tanımlanmış olan bir department_ids
dizi alanı ile Report
modeli:
t.integer "department_ids", default: [], array: true
I department_ids
kolon bir veya daha fazlasını içeren bir rapor satır döndüren bir sorgu yazmak gerekir verilen bölüm_dizimleri.
Benim şu anki geçici çözüm Ruby bu yapmaktır: select
kullanarak Ancak
department_ids = [2, 5]
reports = Report.all.select do |report|
(report.department_ids & department_ids).any?
end
ben ActiveRecord::Relation
nesneleri geri filtrelenmiş sonuçları hidrat gerektiği anlamına gelmektedir yerine ActiveRecord::Relation
bir Array
döndürme olumsuz sahiptir .
Report.where(id: reports.map(&:id))
Bu adımdan kaçınmak ve bunların tümünü tek bir sorguda ele almak istiyorum.
Böyle bir sorguyu Active Record ile nasıl yazabilirim? Böyle
böyle alanıyla istiyorum var ki? Belki departmandaki report_id'yi tanımlamanız veya bir çok kişiye bir dernek kurmanız gerekir? – AntonTkachov