代码之家  ›  专栏  ›  技术社区  ›  Sameer C

Rails ActiveRecord复合密钥ID和类型

  •  0
  • Sameer C  · 技术社区  · 15 年前

    假设我有一个表动物有一个列父对象 另外,我在桌子上有一个用来指示物种的类型ID。

    所以在我的动物课上,Animall.All会返回所有动物。

    现在我在动物类型表中添加了两种新的动物类型,狗和猫。所以现在有些动物有1型和2型。

    我可以在动物身上写一个命名的“观察镜”,把所有的猫或狗都归还。

    但是如果我想创建引用动物表的猫和狗类,那么在狗类中,dog.all应该发出一个查询,从类型为\id=1的动物中选择*

    然后假设我创建了一个名为person的类,并添加了一个has-many:dogs relationship

    我怎样才能做到这一点?

    1 回复  |  直到 15 年前
        1
  •  1
  •   Doon    15 年前

    Rails中实现这一点的方法是Sti(单表继承)。简短的回答是,向表中添加一个类型字段,然后对动物进行子类划分。

    看见 http://api.rubyonrails.org/classes/ActiveRecord/Base.html

    所以在你的情况下,你会。

    class Animal < ActiveRecord::Base; end
    class Dog < Animal; end
    class Cat < Animal; end