gpt4 book ai didi

ruby-on-rails - 我怎样才能让它变干?

转载 作者:太空宇宙 更新时间:2023-11-03 17:26:40 26 4
gpt4 key购买 nike

if condition1
ModelName.named_scope1(parameter).named_scope2.named_scope3(parameter).named_scope4
elsif condition2
ModelName.named_scope1(parameter).named_scope2.named_scope3(parameter).named_scope5
elsif condition3
ModelName.named_scope1(parameter).named_scope2.named_scope3(parameter).named_scope6
elsif
ModelName.named_scope1(parameter).named_scope2.named_scope3(parameter).named_scope7
end

为了解决上述问题,我编写了类似这样的内容,但它会触发两个查询。

values = ModelName.named_scope1(parameter).named_scope2.named_scope3(parameter)

if condition1
values.named_scope4
elsif condition2
values.named_scope5
elsif condition3
values.named_scope6
elsif
values.named_scope7
end

有什么解决办法吗?

最佳答案

您的第一个和第二个示例执行完全相同的操作,因此原始实现一定也发送了两个查询。我认为您的伪代码有点过于通用,无法进一步评论,但通常当我有 if..elsif..else 条件列表(或长案例..when's for that matter)时,我会尝试考虑是否可以使用一个查找表(只是一个哈希)。但是,它可能并不直接适用于您的示例。

所以不是这样的:

case value
when "one"
obj.do_something(1, 2, 3)
when "two"
obj.do_something(4, 5, 6)
when "three"
...
end

重新思考为:

args_map = {
"one" => [1, 2, 3],
"two" => [4, 5, 6],
"three" => ...
}

obj.do_something(*args_map[value])

关于ruby-on-rails - 我怎样才能让它变干?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7498650/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com