def retrieve_transaction(from_when: '', to_when: '')
from_when = Time.parse(from_when).to_i
to_when = Time.parse(to_when).to_i
starting_after = nil
all_transaction = []
loop do
results = Stripe::BalanceTransaction.all(limit: 100, starting_after: starting_after, available_on: { gt: from_when, lt: to_when })
break if results.data.length == 0
all_transaction += results.data
starting_after = results.data.last.id
end
all_transaction
end
此代码与提取事务有关。
但是,如果from_when: '', to_when: ''
都是空的,我很乐意执行
results = Stripe::BalanceTransaction.all(limit: 100, starting_after: starting_after)
如果他们都提供了,我很乐意执行
results = Stripe::BalanceTransaction.all(limit: 100, starting_after: starting_after, available_on: { gt: from_when, lt: to_when })
我可以编写switch语句,或if语句,但我觉得它根本没有效率。你是否知道以更多Ruby方式处理这种情况的任何其他更好的方法(我对Ruby来说很新......)?
修改
如果一个是空的并且提供了一个怎么办?
如果提供from_when: ''
,
Stripe::BalanceTransaction.all(limit: 100, starting_after: starting_after, available_on: { gt: from_when})
应该执行,反之亦然。
答案 0 :(得分:0)
也许这样的事情会适用于你的情况。 使用
构建要调用方法的所有参数的哈希params = {
starting_after: starting_after
}
params[:available_on] = {
gt: from_when,
lt: to_when
} unless (from_when.empty? || to_when.empty?)
...
results = Stripe::BalanceTransaction.all(params)