2012-01-09 56 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