我正在开展一个项目,在这个项目中我遇到了一个看似非常简单的场景设计的困难:
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).