Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby Rails模型中的条件逗号_Ruby_Ruby On Rails 3 - Fatal编程技术网

Ruby Rails模型中的条件逗号

Ruby Rails模型中的条件逗号,ruby,ruby-on-rails-3,Ruby,Ruby On Rails 3,在模型中定义一个方法的最佳方法是什么?该方法包含的列可以为nil,但如果不是nil,则用逗号或连字符分隔?例如,城市和州需要后跟逗号的位置。显然,只有在城市、州和国家都需要的情况下,这种方法才会起作用。否则,我会留下不需要的逗号。例如,用户可能只列出了一个州,或者可能只列出了一个城市和国家 用户模型 def location "#{city}, #{state}, #{country}" end 我试图避免一些非常丑陋的代码,就像我在下面写的一样。有人知道写这篇文章的更干净或更

在模型中定义一个方法的最佳方法是什么?该方法包含的列可以为nil,但如果不是nil,则用逗号或连字符分隔?例如,城市和州需要后跟逗号的位置。显然,只有在城市、州和国家都需要的情况下,这种方法才会起作用。否则,我会留下不需要的逗号。例如,用户可能只列出了一个州,或者可能只列出了一个城市和国家

用户模型

 def location
      "#{city}, #{state}, #{country}"
 end
我试图避免一些非常丑陋的代码,就像我在下面写的一样。有人知道写这篇文章的更干净或更漂亮的方法吗

这里有一点丑陋的,糟糕的方法,我想避免。基本上,明确地写出每种可能性

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

加入不为空的值:

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

如果您只想去掉
nil
值而不是nils、空字符串、空数组等,还可以使用
[城市、州、国家].compact.join(“,”)