0

总的来说,Rails 和编程的新手,所以如果我的问题的答案看起来很明显,请原谅我。我已经做了很多阅读,包括ROR 指南,但似乎找不到特定于以下情况的场景:

我在一个模型下搭建了三个User模型,并试图像这样链接它们:

class User < ActiveRecord::Base
   has_many :malls, :dependent => :destroy
end

class Mall < ActiveRecord::Base
   belongs_to :user
   has_many :stores, :dependent => :destroy
   has_many :cakes, :as => :cake_poly, :dependent => :destroy
end

class Store < ActiveRecord::Base
   belongs_to :mall
   has_many :cakes, :as => :cake_poly, :dependent => :destroy
end

class Cakes < ActiveRecord::Base
   belongs_to :cake_poly, :polymorphic => true
end

这行得通吗?如果是这样,是否有更好的方法来实现这一点?如果没有,我还能如何实施关联?

这个想法是每个User可能有很多malls,每个Mall可能有很多stores,两者都malls可能stores有很多cakes

4

1 回答 1

0

你设计的一个关键问题是意图——你想要实现什么?

如果您只是想为商城模型聚合商城商店中可用的蛋糕,则不应使用多态关系。您可以使用以下关系来实现这样的设计:

class Mall < ActiveRecord::Base
  has_many :stores
  has_many :cakes, :through => :stores
end

如果两组(商场中的蛋糕,商场商店中的蛋糕)不相关,多态方法是一个完美的选择。

于 2013-05-03T09:57:56.163 回答