gpt4 book ai didi

ruby-on-rails - while循环在rails中创建多条记录

转载 作者:数据小太阳 更新时间:2023-10-29 07:47:08 25 4
gpt4 key购买 nike

我正在构建一个应用程序,用户可以在其中购买跟踪号。我有一个订单模型和一个订单交易模型。如果 Order Transaction 从网关成功返回,我将使用 after_save 回调来触发创建跟踪号并将它们插入数据库的方法。有时用户只订购了一个,但如果他们订购了多个,我似乎无法让 rails 创建和插入多个记录。

这是我正在使用的——我从来没有使用过这样的循环,所以我不确定我做错了什么。

def create_trackables
if self.success == true
@order = Order.find(order_id)
@start = 0
while @start < @order.total_tokens
@trackable_token = Tracker.create_trackable_token
@start += 1
@trackable ||= Tracker.new(
:user_id => @current_user,
:token => @trackable_token,
:order_id => order_id
)
@trackable.save
end
end
end

最佳答案

dmarkow 是正确的,你应该使用 trackable 而不是 @trackable 但你也应该使用 = 而不是 || =。您也可以只使用 create。我会这样写:

 def create_trackables
return unless self.success
order = Order.find(order_id) #you shouldn't need this line if it has_one :order
1.upto(order.total_tokens) do
Tracker.create!(
:user_id => @current_user,
:token => Tracker.create_trackable_token,
:order_id => order_id
)
end
end

关于ruby-on-rails - while循环在rails中创建多条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5889580/

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