Rails - 如何将“商店”与多个“商城”同时关联?

时间:2015-09-07 17:33:50

标签: ruby-on-rails

我正在制作一个简单的rails应用程序,它充当科威特所有商城和商场内商店的目录。我创建了Shop模型和Mall模型,并建立了以下关联: -

class Shop
has_many_and_belongs_to :malls

class Mall
has_many :shops

由于同一商店可以存在于多个商场,我希望能够同时将商店与多个商城联系起来。当我去商场展示页面时,我怎样才能使商店自动出现在许多不同的购物中心,而不必每次为每个购物中心单独创建相同的商店。换句话说,我需要能够在创建新商店时选择商店所属的商场,然后让商店出现在我之前指定的商场中。

更新 解释在创建过程中将商店分配到特定商城。例如,当我创建一个新商店时,如何指定它属于Mall A和Mall B而不是Mall C,然后将它们显示在相应的Malls展示页面中?

1 个答案:

答案 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永远不会与商店相关