有办法写得干净吗?

问题描述 投票:0回答:1

所以我有一个标志来禁用和启用某个功能。并将根据变量必须切换标志

flag_a
flag_b
是我的两个功能标志,变量输入字符串可以是
none
all
flag_a
flag_b
作为输入字符串,我们可以进一步添加更多标志,例如 flag_c 或 flag_d太这样了。

def input
  variable = stdin "value"
  update_flag(value.upcase)
end

def update_flag(value)
 case value
 when "BOTH"
    toggle_flag(flag_a, true)
    toogle_flag(flag_b, true)
 when "FLAG_A"
    toggle_flag(flag_a, true)
    toogle_flag(flag_b, false)
 when "FLAG_B"
    toggle_flag(flag_a, false)
    toogle_flag(flag_b, true)
 when "NONE"
    toggle_flag(flag_a, flase)
    toogle_flag(flag_b, false)
end

def toggle_flag(name, flag)
  if flag
    Featureflag.user(@id).enable(name.to_sym)
  else
    Featureflag.user(@id).disable(name.to_sym)
  end
end 

我想要一种将值发送到变量的方法,此输入仅通过控制台作为输入发送。

尝试使其干燥并使其乐观,并且必须易于灵活的方法 注意“输入仅通过控制台作为输入发送”

ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4
1个回答
0
投票

以下是上述代码的修改版本

def input
  value = prompt_input("Enter value:").upcase
  update_flags(value)
end

def update_flags(value)
  case value
  when "BOTH"
    toggle_flag(:flag_a, :enable)
    toggle_flag(:flag_b, :enable)
  when "FLAG_A"
    toggle_flag(:flag_a, :enable)
    toggle_flag(:flag_b, :disable)
  when "FLAG_B"
    toggle_flag(:flag_a, :disable)
    toggle_flag(:flag_b, :enable)
  when "NONE"
    toggle_flag(:flag_a, :disable)
    toggle_flag(:flag_b, :disable)
  else
    puts "Invalid value: #{value}"
  end
end

def toggle_flag(name, action)
  Featureflag.user(@id).send(action, name)
end

def prompt_input(message)
  print message + ' '
  gets.chomp
end
© www.soinside.com 2019 - 2024. All rights reserved.