我正在制作一个简单的rails应用程序,它充当科威特所有商城和商场内商店的目录。我创建了Shop模型和Mall模型,并建立了以下关联: -
class Shop
has_many_and_belongs_to :malls
class Mall
has_many :shops
由于同一商店可以存在于多个商场,我希望能够同时将商店与多个商城联系起来。当我去商场展示页面时,我怎样才能使商店自动出现在许多不同的购物中心,而不必每次为每个购物中心单独创建相同的商店。换句话说,我需要能够在创建新商店时选择商店所属的商场,然后让商店出现在我之前指定的商场中。
更新 解释在创建过程中将商店分配到特定商城。例如,当我创建一个新商店时,如何指定它属于Mall A和Mall B而不是Mall C,然后将它们显示在相应的Malls展示页面中?
答案 0 :(得分:3)
您可以拥有HABTM关联来处理此问题,
class Shop < ActiveRecord::Base
has_and_belongs_to_many :malls
end
class Mall < ActiveRecord::Base
has_and_belongs_to_many :shops
end
为Shop和Mall表创建迁移,您需要进行迁移才能创建一个表,作为商店和商城之间的连接。它应该包含mall_id和shop_id作为属性。
rails g migration create_mall_shops
控制器代码更新:
shop = Shop.find(params[:id])
mall = Mall.find(params[:mall_id])
shop.malls << mall
shop.malls将为您提供一系列与商店相关的商场。 现在,按照您的预期回来,在shop.malls数组中,只推送商城对象A和B.所以商城C永远不会与商店相关