在模型中定义包含可以为nil的列的方法的最佳方法是什么,但如果不是nil则用逗号或连字符分隔?例如,城市和州需要使用逗号的位置。这种方法显然只有在需要城市,州和国家的情况下才有效。否则,我留下了不受欢迎的逗号。例如,用户可能只有一个州列出或可能只有一个城市和国家。
用户模型
def location
"#{city}, #{state}, #{country}"
end
我试图避免一些非常丑陋的代码,类似于我在下面提到的代码。有没有人知道更清洁或更漂亮的方式来写这个?
这是我想要避免的一些丑陋,糟糕的方法。基本上,明确写出每种可能性。
def location
if !city.blank? && state.blank? && country.blank?
"#{city}, #{state}, #{country}"
end
end
答案 0 :(得分:7)
加入非空白的值:
def location
[city, state, country].reject(&:blank?).join(", ")
end