2012-01-09 28 views
0

在模型中定義一個方法的最佳方式是什麼?該方法包含的列可以爲nil,但用逗號或連字符分隔,如果不是nil?例如,一個城市和州將需要用逗號跟隨的位置。這種方法顯然只有在城市,州和國家都需要的情況下才有效。否則,我留下不需要的逗號。例如,用戶可能只列出一個州或可能只有一個城市和國家。Rails模型中的條件逗號

用戶模型

def location 
     "#{city}, #{state}, #{country}" 
end 

我是儘量避免類似於我下面把一些真正醜陋的代碼。有誰知道寫一個更清潔或更漂亮的方式嗎?

這是我想要避免的一個醜陋的壞方法。基本上,明確寫出每種可能性。

def location 
    if !city.blank? && state.blank? && country.blank? 
    "#{city}, #{state}, #{country}" 
    end 
end 

回答

7

加入是不爲空值:

def location 
    [city, state, country].reject(&:blank?).join(", ") 
end 
+0

如果你只是想擺脫'nil'值,而不是尼爾斯,空字符串,空數組,......,你可以也使用'[city,state,country] .compact.join(「,」)' – 2012-01-09 23:42:54