2010-08-01 36 views
0

說我有一個具有PARENT_ID 說一欄也是我在桌子上TYPE_ID指示物種在我Animal類Rails的ActiveRecord的複合鍵標識和類型

所以表的動物,Animall.all將返回所有的動物。

假設現在我在animal_types表中添加兩種新的動物類型,即狗和貓。所以現在一些動物的type_id是1和一些2.

我可以在Animal上寫一個named_scope來返回所有的貓或所有的狗。

但如果我想去狗類創建引用該表的動物貓,狗類,所以的路線,dog.all應該發出一個查詢,SELECT * FROM動物,其中TYPE_ID = 1

然後說我創建了一個叫做person的類,並添加了一個has_many:狗的關係

我該如何做這個工作?

回答

1

在rails中這樣做的方式是STI(單表繼承)。簡短的答案是你添加一個類型字段的表,然後子類動物。

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

所以你的情況,你會。

class Animal < ActiveRecord::Base; end 
class Dog < Animal; end 
class Cat < Animal; end 
相關問題