根据测试结果,我正在尝试在Rails中选择AB测试选项。我想找一个更有效的方法来做第一个零测试: 如果给定选项A为零,则返回B. 如果给定选项B为零,则返回A
module AbTestHelper
def ab_test_choice(ab_test_name, option_a, option_b, *args)
#This part
return option_b unless option_a
return option_a unless option_b
#This part
check_test_enabled = "#{ab_test_name}_enabled?"
test_result = send(check_test_enabled, args) if respond_to? check_test_enabled
return option_a if result
option_b
end
private
def colour_enabled?(user = current_user)
return unless user.is_a? User
user.enabled_for?(:colour)
end
end
答案 0 :(得分:1)
对我来说似乎没问题,但另一种方法是使用^
运算符,如下所示:
...
return option_a or option_b if !!option_a ^ !!option_b
...
^
运算符是独占运算符,因此仅当其中一个选项为true
或nil
时才会成立。
这个问题是它比原始版本更少惯用且更难理解。