我有一些樹形結構的類別。我試圖通過爲每一個定義一個父項來將它們連接在一起。 (我不知道如何致電parent
,因此它現在只是category
,但它意味着父母)。創建一個具有樹形結構的模型
class Category < ActiveRecord::Base
has_one :category # the parent category
end
但是這種關係最終會以錯誤的方式結束。
吸氣功能是對孩子類別(正確),但category_id
存儲在父:
parent = Category.create(:name => "parent")
child = Category.create(:name => "child", :category => parent)
parent.id # 1
child.id # 2
child.category_id # nil
parent.category_id # 2
child.category.name # "parent" (!!)
父需要能夠有多個孩子,使這是行不通的。
我同意阿德里亞諾,這是行不通的。當我做'obj.parent'之類的東西時,運行的查詢就像'select objs。* from objs where objs.parent_id = 3'看起來正確嗎?那麼obj.parent_id不是3,但它的ID是。儘管如此,「children」方法仍然有效。 – DJTripleThreat 2014-02-23 11:09:11
我可以這樣做來改正你的答案: 'belongs_to:parent,:class_name =>「Category」,:foreign_key =>:id,:primary_key =>:parent_id' – DJTripleThreat 2014-02-23 11:16:31
@DJTripleThreat你確定你沒有'你在'belongs_to'關聯上設置了'foreign_key'還是把外鍵('belongs_to')放在了父項上?這裏至關重要的一點是,你從子對象的關鍵字引用父對象,因此當你調用'child.parent'時,你將得到一個類似於'SELECT model。* FROM models WHERE id = child.parent_id LIMIT 1'。 – coreyward 2014-02-24 00:07:59