我正在开展一个项目,在这个项目中我遇到了一个看似非常简单的场景设计的困难:
user
属于city
属country
,然而,city
参考可以是null
同时user
必须属于一个country
仍然.换句话说(在基本的 RoR模型语法中),
# class User < ActiveRecord::Base
belongs_to :city
belongs_to :country
validates_existence_of :country
# class City < ActiveRecord::Base
has_many :users
belongs_to :country
validates_existence_of :country
# class Country < ActiveRecord::Base
has_many :users
has_many :cities
Run Code Online (Sandbox Code Playgroud)
我这个超级简单设计的问题在于冗余太多了.一旦a city
被a 引用user
,country
引用就可以从它推断出来(换句话说,因为它已经在city
表中引用,所以在表中引用它似乎并不那么令人敬畏user
).