Sli*_*k23 3 ruby ruby-on-rails ruby-on-rails-3
我正在构建一个用户可以购买跟踪号码的应用程序.我有一个订单模型和一个订单交易模型.如果订单事务从网关成功返回,我使用after_save回调来触发创建跟踪号并将它们插入数据库的方法.有时用户只订购一个,但如果他们订购的不止一个,我似乎无法创建和插入多个记录.
这就是我正在使用的东西 - 我从来没有像这样使用过循环,所以我不确定我做错了什么.
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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2984 次 |
| 最近记录: |