2
数据库规范化的第一种形式是在第二个表中保存可能为空的字段,并在引用它们时将其加入。 SQL看起来像这样。用于处理复合记录的Rails模型
SELECT A.*, DA.* FROM ANIMALS A
INNER JOIN DOG_ATTRIBUTES DA ON DA.ANIMAL_ID = A.ID
这对于大型数据库使用非常普遍,所以只有一只狗才会拥有特定于狗的属性。现在我知道这可以作为has_one关系来实现,例如,
class Dog < Animal
has_one :dog_attribute
end
如果它是一个只读的模式,我可以实现上面的SQL的看法,只是指狗我的狗模型图。
有没有一种方法可以将复合Dog对象(来自ANIMALS表和DOG_ATTRIBUTES表的属性)作为单个模型对待,将两者的属性放置到窗体中,将它们保存为一个命令并检索两者的属性?
您的查询不说什么'A'别名指。 – onebree
感谢您告诉我,我已经更新了。 – AJFaraday
你能澄清你的问题吗?我不知道你是否希望'Dog'是'Animal'的一个子类(意思是说,它接受所有的动物方法/ attr),或者如果你希望它独立于长期。你现在的模型说你有一张表“animals”,里面有一个'type'列(其中一个选项是'dog')。从那里,你有另一个名为'dog_attributes'的模型/表。 – onebree