2010-02-15 21 views
3

在不同模型之間的關聯中,可以避免使用燈具名稱直接設置外鍵ID,如this answer。自我引用關聯如何使用acts_as_tree?嘗試這樣的:引用Rails中相同類型的燈具

# categories.yml 
forsale: 
    name: For Sale 
    parent_id: nil 

books: 
    name: Books 
    parent: forsale 

我得到這個錯誤:

SQLite3::SQLException: table categories has no column named parent: INSERT INTO "categories" ("name", "parent") VALUES ('Books', 'forsale') 

有沒有什麼辦法讓一個燈具refence另一個在同一類,而不使用明確的標識?

更新:

追加像polymorphic belongs_to燈具也不管用括號之間的類名。這樣做:

books: 
    name: Books 
    parent: forsale (Category) 

主要生產用於books,而不是forsale的ID隨機parent_id

回答

2

我已經做了好幾次了,不知道爲什麼它不適合你。夾具看起來正確,因爲你有他們(沒有多態性(Category))。該協會是否可以在您的其他應用中使用?你使用的是什麼版本的Rails?你應該有這樣的事情在你的Category型號:

belongs_to :parent, :class_name => "Category" 

如果你只想迫使它的工作,你可以設定一個明確的parent_id這樣的:

books: 
    name: Books 
    parent_id: <%= Fixtures.identify :forsale %> 

但是這顯然不夠理想。 ..

+0

我遇到了這個問題,有時候你的關聯並沒有完全退出。 – Garrett 2010-02-16 00:14:21

+0

這個Q是舊的,我認爲它是[<%= ActiveRecord :: FixtureSet.identify(:forsale)%>](http://edgeapi.rubyonrails.org/classes/ActiveRecord/FixtureSet.html#class-ActiveRecord: :FixtureSet-label-Fixture +標籤+插值)。 – mlt 2017-08-16 22:58:02

相關問題