2016-08-09 30 views
0
row = {"joining_date"=>"18/07/2015", "name"=>" Joe Doe ", "company"=>" Google", "location"=>" New York ", "role"=>"developer", "email"=>"[email protected]", "mobile"=>"11-(640)123-45674", "address"=>"4 XYZ Road", "validity"=>"true"} 

row ist nur ungültig, wenn einer der Felder (joining_date, name, company, location, email, address) nil ist oder nicht present.Ruby Regex, um Null oder leere Werte für den Import von CSV zu finden?

def is_valid? 
    valid = true 
    if row[:name] == nil || row[:joining_date] == nil || row[:address] == nil || row[:email] == nil || row[:company] == nil || row[:location] == nil 
    valid = false 
    end 
    valid 
end 

Gibt es eine Möglichkeit, dass ich das obige Verfahren in Schienen vereinfachen und Refactoring kann es effizienter finden Regex?

Antwort

0

Wahrscheinlich, aber ich würde keine Regex verwenden, da es in einem Hash ist. Wenn Sie Schienen verwenden, können Sie present? oder blank? verwenden.

row.values.any?(&:blank?) 

Würde wahr zurück, wenn

für Ihren Fall

def is valid? 
    row.values.all?(&:present?) 
end 
+0

Dank leer sind. Aber ich möchte nicht nach allen Schlüsseln suchen. Es dürfen nur bestimmte Werte nicht leer sein. – Vinay

+1

@Vinay dann schneiden Sie einfach nur diese Schlüssel, 'row.slice (: key_1,: key_2,: key_3) .values.all? (&: Vorhanden?)' – lusketeer

+0

@lusketeer row.slice? Undefined Methode für 'Scheibe' für HASH – Vinay