我想知道下面是否有更短/更简单的代码编写方式。
if statement
result = model.find_by(key => row[key.to_s])
else
result = model.find_by(key => row[key.to_s], secondkey => row[secondkey.to_s])
end
我在想这样的事情:
args = {key => row[key.to_s]}
result = model.find_by(args)
但是我不知道该怎么做。
感谢您的回答!
如果情况不佳,该怎么写?
我喜欢将args = {key => row[key.to_s]}
放在循环之前,我尽量避免每次都检查该语句。
statement = true
rows.each do |row|
if statement
result = model.find_by(key => row[key.to_s])
else
result = model.find_by(key => row[key.to_s], secondkey => row[secondkey.to_s])
end
# more code
end
答案 0 :(得分:1)
我建议像这样
args = { key: row[key.to_s] }
args.merge!({ secondkey: row[secondkey.to_s] }) if statement
result = model.find_by(args)
为避免查询每个循环,您可以执行以下操作:
statement = true
first_condition = row.map { |h| h[: key] }
second_condition = row.map { |h| h[:secondkey] }
result1 = model.where(key: first_condition)
result2 = model.where(key: first_condition, secondkey: second_condition)
这将为您提供两个关系,无需其他查询即可选择。