Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使使用STI的子类精神错乱的最佳方法_Ruby On Rails_Ruby On Rails 3_Instantiation_Single Table Inheritance - Fatal编程技术网

Ruby on rails 使使用STI的子类精神错乱的最佳方法

Ruby on rails 使使用STI的子类精神错乱的最佳方法,ruby-on-rails,ruby-on-rails-3,instantiation,single-table-inheritance,Ruby On Rails,Ruby On Rails 3,Instantiation,Single Table Inheritance,我在我的应用程序中使用单表继承,在如何最好地实例化一个子类的问题上,我陷入了两难境地。假设我们有一个类住宅,以及子类公寓和房子。现在住宅与另一个类邻里相关联 模型/住宅 belongs_to :neighborhood 模型/邻里 has_many :dwellings 假设我已经实例化了一个新的邻居,如下所示,我想创建一个房子 n = Neighborhood.new 以下哪种方法是正确的 n.dwellings.build House.new 如果我使用第一个方法进行实例化,我必

我在我的应用程序中使用单表继承,在如何最好地实例化一个子类的问题上,我陷入了两难境地。假设我们有一个类
住宅
,以及子类
公寓
房子
。现在
住宅
与另一个类
邻里
相关联

模型/住宅

belongs_to :neighborhood
模型/邻里

has_many :dwellings
假设我已经实例化了一个新的邻居,如下所示,我想创建一个
房子

n = Neighborhood.new
以下哪种方法是正确的

n.dwellings.build 

House.new
如果我使用第一个方法进行实例化,我必须填写
:type
。但是使用第二种方法,我必须输入外键。我还读到,我永远不应该通过其父类实例化子类,这样会立即排除
n.weldings.build
,如果这个建议是正确的?任何指导都将不胜感激,谢谢

我想是吧

has_many :apartments 
has_many :houses
除了:在附近有许多:住宅模式将解决您的问题

n = Neighborhood.new
现在你可以使用

n.houses.build 

h=House.new
n、 房屋
h = House.new
n.houses << h