2016-08-30 2 views
0

ich diese Abfrage verwendet habe, die Daten für einen bestimmten Benutzer genehmigt Blätter abrufen -Um Werte von 2D-Array zu erhalten

LeaveRequest.where(user_id: 6).where(status: 1).pluck(:from_date, :to_date) 

und ich bekomme dieses Array als Ergebnis -

[[Mon, 12 Sep 2016, Fri, 16 Sep 2016], [Tue, 06 Sep 2016, Tue, 06 Sep 2016], [Thu, 01 Sep 2016, Fri, 02 Sep 2016], [Tue, 30 Aug 2016, Wed, 31 Aug 2016]] 

was Ich möchte alle Daten sowie die Daten zwischen dem 12. September 2016 und dem 16. September 2016 (13. 14. und 15.) abrufen.

+0

Sind die Array-Ergebnisse Zeichenfolgen? Weil sonst das Array zu viel Sinn macht? –

+0

@MuntasirAlam, gut die Daten sind vom "Datum" -Datentyp. –

Antwort

2

ich Sie so etwas wie dieses

require 'date' 
#This is to simulate your current Array 
current_array = 5.times.map {|n [Date.new(2016,n+1,1).<<(1),Date.new(2016,n+1,1)]} 
#map the 2 dates to a Range 
new_array = current_array.map{|start_date,end_date| (start_date..end_date)} 
new_array.first.class 
#=> Range 

Aufruf to_a auf der Strecke bedeuten gehe davon wird es ausblasen in alle Termine zwischen start_date und end_date

Mit einem Schienen Sie so etwas wie

tun könnte
class LeaveRequest 
    def self.user_requested_ranges(user_id, status_id) 
    scoped. 
     where(user_id: user_id, status: status_id). 
     pluck(:from_date, :to_date). 
     map do |from_date, to_date| 
     #optionally to output the full Array in each Range you could use 
     #(from_date..to_date).to_a 
     (from_date..to_date) 
     end 
    end 
end 

Dann anrufen als

LeaveRequest.user_requested_ranges(6,1) 
+0

Ich habe meine Frage bearbeitet –

+0

@sharma_a meine Antwort gilt noch. 'pluck' gibt ein' Array' zurück und Sie können dieses 'Array' in ein' Array' von Bereichen umwandeln. Ich werde einen Schienenweg für Sie hinzufügen, nur um das klarer zu machen. – engineersmnky

+0

Es hat funktioniert, vielen Dank. –

Verwandte Themen