2016-04-06 10 views
2

Bei einem Array mit null oder einem Element, wie gebe ich entweder das erste Element oder nil zurück?Das erste Element eines leeren Arrays abrufen

Ich habe funktionierenden Code, aber es ist nicht sehr elegant:

class Category < ActiveRecord::Model 
    adapter sqlite 

    table_name "categories" 

    primary id  : Int 
    field parent_id : Int 
    field name  : String 

    # return a category or nil 
    def self.root 
    roots = where(criteria("parent_id").is_null) 

    if roots.empty? 
     nil 
    else 
     roots.first 
    end⋅ 
    end 
end 

Antwort

3

Sie einfach first? auf dem Array aufrufen können:

def self.root 
    where(criteria("parent_id").is_null).first? 
    end 
+3

Ich dachte, 'erste' würde eine boolean zurückgeben, wie in der Ruby-Konvention. – Kris

Verwandte Themen