gpt4 book ai didi

mysql - rails : Autocreate associated records as soon as parent record is saved

转载 作者:行者123 更新时间:2023-11-30 22:37:43 25 4
gpt4 key购买 nike

我试图在保存父记录后立即在子表中自动创建记录,但我被卡住了,需要帮助如何做到这一点。

所以我的 Orgs 表层次结构就像 Org->Brand->Restaurant(例如,美国(组织)-> 肯德基(品牌)-> 旧金山(餐厅))。

一个品牌有很多菜单,菜单属于一个品牌。现在我想从品牌菜单中为每个餐厅级联菜单,因为我想由餐厅管理价格。为此,我创建了一个包含 restaurant_id 和 menu_id 的“local_menus”表,这样我就不必复制一些数据,并且 local_menus 中的更改不会影响其父项。

问题是如何在创建父菜单后立即在“local_menus”中自动创建记录。更具体地说,当我创建一个 menuA 时,需要为该品牌下的所有餐厅自动创建相同的菜单。感谢您的支持。

模型:

class LocalMenu < ActiveRecord::Base
belongs_to :restaurant
belongs_to :menu
end

class Menu < ActiveRecord::Base
has_many :local_menus
belongs_to :brand
end

class Restaurant < ActiveRecord::Base
has_many :menus, through: :local_menus
end

表格:

local_menus
t.integer "restaurant_id", limit: 4
t.integer "menu_id", limit: 4
t.boolean "active_status", limit: 1
t.boolean "instock_status", limit: 1
t.integer "price", limit: 4


menus
t.integer "restaurant_id", limit: 4
t.string "name", limit: 255
t.integer "price", limit: 4
t.integer "brand_id", limit: 4
t.integer "category_id", limit: 4
t.text "description", limit: 65535
t.boolean "active_status", limit: 1
t.date "start_date"
t.date "end_date"

restaurants
t.string "name", limit: 255
t.string "name_kana", limit: 255
t.integer "price", limit: 4
t.boolean "active_status", limit: 1
t.integer "brand_id", limit: 4

最佳答案

一种方法是使用 :after_create 回调为该品牌的所有餐厅创建本地菜单。

class Menu < ActiveRecord::Base

after_create: :build_local_menus_for_brand

def build_local_menus_for_brand
brand.restaurants.each do |restaurant|
self.local_menus.create!(restaurant_id: restaurant.id)
end
end
end

关于mysql - rails : Autocreate associated records as soon as parent record is saved,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32001762/

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