2012-07-28 73 views
0

我正在创建一个多租户应用程序,并试图找出如何建模与Mongoid这种关系。我有一个Site模型,其中has_many :domainsembeds_many,或者甚至使用一个字符串数组(如果可以的话)。我想验证只有唯一的域可以关联(所以两个Sites不能有相同的域)。我也希望能够通过给定的域名找到网站。Mongoid独特的儿童

我怎么用Mongoid来表示这个?另外,我将如何查询给定域的Site

回答

1

你最好用has_many关联。

在领域模型只是做,你会很好。假设你想要独特的域名,如果url只是改变它。

validates_uniqueness_of :name 

如果嵌入它,你不能做到这一点的验证容易,你需要获取所有网站和域,或者保持一个不同的收集只用域名,看它是否存在。与查询具有给定域的网站相同。因为你不知道它所属的网站,就无法获得域名。


如果做适当的关系作为

class Site 
    field :name 
    has_many :domains 
end 

class Domain 
    field :name 
    belongs_to :site 
end 

然后,您可以做,像ActiveRecord的

some_domain.site 

文档:http://mongoid.org/en/mongoid/docs/relations.html#has_many

+0

好吧,听起来不错。你能提供一个我如何查找基于给定域的网站的例子吗? – Andrew 2012-07-28 05:43:46

+0

编辑了答案 – 2012-07-28 07:11:41