将字符串插入到ruby方法的一部分

tim*_*one 2 ruby ruby-on-rails

我有一些项目可以是红色,黄色,绿色(比这更复杂)的几个属性之一,它们有相应的is_red,is_yellow,is_green布尔值.

我希望有一个api函数来改变我传递的值,例如:

id: 12
type: red
Run Code Online (Sandbox Code Playgroud)

在我的功能中有:

item=Item.find(id)
if item.is_ + type == true
  item.is_ + type=false
end 
Run Code Online (Sandbox Code Playgroud)

我该怎么做?

thx提前

old*_*god 5

使用 send

item = Item.find(id)

if item.send(:"is_#{type}") == true
  item.send(:"is_#{type}=", false)
end 
Run Code Online (Sandbox Code Playgroud)