遍历多个参数,然后存储在HM BT连接表中

我刚接触Rails。 我有这个旅行预订网站,该网站具有正常运行的购物车系统。我试图将购物车中的所有内容发送到我的订购模型,以便用户可以看到他们订购的产品。 基本上,每个用户都可以预订多个旅行,每个旅行可以有多个旅行者。

这是我的代码:

参数:

Parameters: {"order"=>{"trip_ids"=>["1","2"],"traveller_ids"=>["1","2","3","4"]},"commit"=>"Create Order"}

TripTraveller模型

class TripTraveller < ApplicationRecord
    belongs_to :trip
    belongs_to :traveller
    belongs_to :order
end

旅行模式

class Trip < ApplicationRecord
    has_many :trip_travellers
    has_many :travellers,:through => :trip_travellers
end

订单模型

class Order < ApplicationRecord
    has_many :trip_travellers
    has_many :trips,through: :trip_travellers
    has_many :travellers,through: :trip_travellers
end

在我的订单控制器中:

  def create
      params[:order][:trip_ids].each do |trip|
        params[:order][:traveller_ids].each do |traveller|
          trip_traveller = TripTraveller.create!(order_id: @order.id,trip_id: trip,traveller_id: traveller)
        end
      end
    end

例如,在这种情况下,我要实现的目标是能够访问旅行ID = 1的地方,让旅行者拥有ID 1、2、3和4。 行程ID = 2时相同,旅行者ID相同。

我的代码当前有效,但是它在数据库中创建了8条TripTravellers记录,如下所示:

 => #<activeRecord::Associations::CollectionProxy [#<TripTraveller id: 94,trip_id: 1,traveller_id: 1,order_id: 24,created_at: "2019-11-09 06:07:18",updated_at: "2019-11-09 06:07:18">,#<TripTraveller id: 95,traveller_id: 2,#<TripTraveller id: 96,traveller_id: 3,#<TripTraveller id: 97,traveller_id: 4,#<TripTraveller id: 98,trip_id: 2,#<TripTraveller id: 99,#<TripTraveller id: 100,#<TripTraveller id: 101,updated_at: "2019-11-09 06:07:18">]>

我发现要遍历所有这些都非常困难,并且对于一个订单只有这么多记录可能不是最佳选择。

我考虑过将它们保存为数据库中的数组,例如TripTraveller(id:1,trip_id:1,traveller_id:[1、2、3、4]),然后在trip_id中相同:2,但是我真的不知道该怎么做,而且我听说将数组存储在Join Model中不是最好的主意。

你们认为我应该怎么做才能改进我的代码? 预先感谢!

lipton_12345678 回答:遍历多个参数,然后存储在HM BT连接表中

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3133844.html

大家都在问