我有兩個模型:Person和Relation。第二個存儲有關兩個人之間關係的信息。它有parent_id和child_id字段,並且沒有id字段。我把它與has_many連接起來,並且它可以工作。如何在Rails中不使用ID來管理表?
但是:
- Relation.find(:所有)返回即使有在表中的一些關係(becouse沒有id字段)空數組。
- 我不知道如何刪除關係。
我的模式是這樣的:
class Person < ActiveRecord::Base
has_many :child_relations,
:class_name => "Relation",
:foreign_key => "parent_id"
has_many :parent_relations,
:class_name => "Relation",
:foreign_key => "child_id"
has_many :children, :through => :child_relations
has_many :parents, :through => :parent_relations
end
class Relation < ActiveRecord::Base
belongs_to :parent, :class_name => "Person"
belongs_to :child, :class_name => "Person"
end
有什麼建議?
更新:我用has_many:通過 becouse我也存儲關於表中的關係類型的信息。目前我放棄了,我添加了ID字段到我的表(Rails約定...)。但我的問題仍然存在。
它不工作,兩個has_and_belongs_to_many引用。您應該在人員模型中設置外鍵,而不是在關係中。在關係模型中,Rails會猜測外鍵的名稱,因爲它會將_id添加到關聯名稱(父級和子級)。所以模型的規格應該保留,就像我在我的問題中提出的一樣但無論如何,謝謝! – klew 2009-02-07 15:12:07