【问题标题】:Rails activerecord composite key Id and typeRails activerecord 复合键 ID 和类型
【发布时间】:2010-08-01 03:51:23
【问题描述】:

假设我有一个表 animals 有一个列 parent_id 还说我桌子上有一个type_id来表示物种

所以在我的 Animal 类中,Animall.all 将返回所有动物。

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

我可以在 Animal 上写一个 named_scope 来返回所有的猫或所有的狗。

但是如果我想创建引用动物表的猫和狗类,那么在狗类中,dog.all 应该发出查询,select * from animals where type_id = 1

然后说我创建了一个名为 person 的类,并添加了一个 has_many :dogs 关系

我怎样才能做到这一点?

【问题讨论】:

    标签: ruby-on-rails activerecord polymorphism


    【解决方案1】:

    rails 中实现这一点的方式是 STI(单表继承)。简短的回答是您在表中添加一个类型字段,然后将动物子类化。

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

    所以在你的情况下你会。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-27
      • 1970-01-01
      • 2015-12-10
      • 2017-12-28
      • 2023-03-15
      • 2013-10-30
      相关资源
      最近更新 更多