我将从我的控制器创建动作开始:
def create
this_order = params[:line_items]
this_order.each do |this|
@order = Transaction.new
@order.shopifyid = params[:id]
@order.vartitle = this['variant_title']
@order.save
end
end
如果您不熟悉ShopifyAPI,这只是查看订单JSON并在我的交易表中创建每个订单的内部行,此时它只是存储订单ID然后进入line_items数组并且获取变量标题以存储它。
它工作正常,但当然这会为订单中的每个项目创建一个新行,而我实际上希望它给我一个包含其中所有项目的订单。
这是将我的表列转换为哈希数组的情况吗?或者我错过了另一种方法来做到这一点?
答案 0 :(得分:3)
您可以使用以下关系创建两个模型Transaction
和Item
:
<强>交易强>
has_many :items
<强>物品强>
belongs_to :transaction
您的控制器操作:
def create
@order = Transaction.new
@order.shopifyid = params[:id]
this_order = params[:line_items]
this_order.each do |this|
@order.items.new( #Item attributes )
end
@order.save
end
我认为通过这种方式,你可以在项目表中拥有variant_title
。
答案 1 :(得分:0)
我对shopyify不是很熟悉,但似乎您的问题与您为每个订单项创建一个新对象这一事实有关,因为您在哪里放置了Transaction.new调用。另一种组织方式就是为订单项添加另一个表。您可以将这些行项目的哈希值存储在数据库中,但是您可能希望根据行项目进行某种类型的查询,并且为每个事务执行序列化此列的过程不是时间有效的解决方案。悟空的解决方案与我指的是