gpt4 book ai didi

ruby-on-rails - 如何在 rails 中多次插入数据

转载 作者:行者123 更新时间:2023-11-29 13:57:45 25 4
gpt4 key购买 nike

我想在 rails 中插入多个数据。我正在使用 postgresql,场景是当表单提交时传递客户名称、电子邮件和一些个人信息,然后还传递带有日期的期望地点以及他们想要的设施(例如游泳投票、台球投票等)。 ).在我的后端,我将查询:

venue = Venue.find(theVenue_id)

book = venue.books.new(name: client_name, email: client_email and etc)

我的问题是,如果选择了很多便利设施,我该如何将数据插入到我的 amenity_books 中?

我尝试过这样的事情。

ex. amenities_id_choosen = [1,3]
if book.save
amenities_id_choosen.each do |x|
amenity = Amenitiy.find(x)
amenity_book = amenity.amenity_books.create(venue_id: venue.id)
end

我知道这不是插入数据的好主意,但这是我最后的选择。有没有人知道如何在具有不同数据的 2 个模型中插入多个数据。

模型

class Amenity < ActiveRecord::Base
has_many :categorizations
has_many :venues, through: :categorizations

has_many :amenity_books
has_many :books, through: :amenity_books
end

class Venue < ActiveRecord::Base
has_many :categorizations
has_many :amenities, through: :categorizations
end

class Categorization < ActiveRecord::Base
belongs_to :venue
belongs_to :amenity
end

class Book < ActiveRecord::Base
belongs_to :venue
end

class AmenityBook < ActiveRecord::Base
belongs_to :amenity
belongs_to :venue
belongs_to :book
end

最佳答案

这是一个改进的版本:

amenities_id_choosen = [1,3]

if book.save
Amenitiy.find(amenities_id_choosen).each do |amenity|
amenity.amenity_books.create(venue_id: venue.id)
end
end

这将产生一个 SELECT 查询以查找所有选定的便利设施,并产生一个 INSERT 查询以查找每个选定的便利设施。


另一种选择是更改您的数据模型,AmenityBook 真的需要有 field 吗?因为看起来 field 已经通过 Book 模型定义了。

这里有一个建议:

class Book < ActiveRecord::Base
belongs_to :venue
has_many :amenity_books
has_many :amenities, through: :amenity_books
end

class AmenityBook < ActiveRecord::Base
belongs_to :amenity
belongs_to :book
has_one :venue, through: :book
end

创建包含许多设施的预订的代码:

amenities_id_choosen = [1,3]
book.amenity_ids = amenities_id_choosen

if book.save
# success !
end

关于ruby-on-rails - 如何在 rails 中多次插入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28102621/

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