Ruby on rails 将多个字符串传递给ruby start\u?

Ruby on rails 将多个字符串传递给ruby start\u?,ruby-on-rails,ruby,string,Ruby On Rails,Ruby,String,我有这个密码 if self.name.starts_with?('Bronze') || self.name.starts_with?('Silver') ||self.name.starts_with?('Gold') 是否有一种方法可以一次性传递所有这些字符串,而不是大量传递,或者我可能需要对此进行扩展?接受任意数量的参数。您不需要使用| | 'Silver medal'.start_with?('Bronze', 'Silver', 'Gold') # => true 'Hell

我有这个密码

if self.name.starts_with?('Bronze') || self.name.starts_with?('Silver') ||self.name.starts_with?('Gold')
是否有一种方法可以一次性传递所有这些字符串,而不是大量传递,或者我可能需要对此进行扩展?

接受任意数量的参数。您不需要使用
| |

'Silver medal'.start_with?('Bronze', 'Silver', 'Gold')
# => true
'Hello medal'.start_with?('Bronze', 'Silver', 'Gold')
# => false
否,
start\u with
接受字符串或正则表达式

我会觉得不断扩展的正则表达式很烦人

在我发现之前,我会这样做:

%w[Bronze Silver Gold].any? { |s| name.start_with? s }
不过,我会将单词数组放入变量或常量(我想是方法)

然后我将逻辑放入一个方法中,该方法使用
name
属性,该属性的名称取决于上下文。这使得它非常容易测试、扩展和封装

def precious_metal?
    self.name.starts_with? precious_metals
end

...

if precious_metal?
  # Some logic
end

我不知道,显然是这样的,因为我早该知道的!