我正在開發一個Ruby on Rails應用程序與MySQL和我的數據庫中有一個類別表。 我想將子類別添加到其中一個類別。 我想爲子類創建一個新表,或者只是將它們添加到相同的Categories表中。誰能幫忙?如何添加一個表連接到一行
回答
由於sub_category
只不過是一個category
與父母聯繫,你可以只保存在一個表中都categories
和sub_categories
及導線上的關聯。這種類型的關聯被稱爲自連接關聯。
嘗試以下操作:
class Category < ActiveRecord::Base
has_many :sub_categories, class_name: 'Category', foreign_key: :parent_id
belongs_to :parent, class_name: 'Category'
end
參考Self Joins Association獲取更多信息。
您需要安裝以下遷移:
class AddParentIdToCategories < ActiveRecord::Migration
def change
add_column(:categories, :parent_id, :integer)
end
end
並運行遷移:
bundle exec rake db:migrate
如果你期待你的樹結構更加複雜,例如,具有sub_sub_categories - 行業標準和更多,那麼你可以看看抽象這個功能的幾個寶石。
參考acts_as_tree,並ancestry脫穎而出的詳細信息,
好吧,這是有幫助的,但現在我仍然無法使用'Category.sub_categories'訪問它們。應該有某種引用我應該使用遷移,但我不知道如何去做。 我通常使用Mongodb的軌道,這顯然更容易 – Joma
你究竟想要檢索什麼? Sub_categories與一個類別實例綁定,因此您首先需要加載一個類別,然後調用它的子類別。如果你有什麼所有的子類別,那麼你需要在其中parent_id爲零的類別上定義一個名爲sub_categories的命名範圍。 – Dharam
我試圖檢索與類別綁定的子類別。 我試圖加載實例,但它始終顯示'未定義的方法'sub_categories'爲#
- 1. 創建一個將新行添加到連接表的表單
- 2. eclipse kepler如何添加按鈕連接到另一個表格
- 3. 使用連接爲每個主錶行添加最後一行?
- 4. 組連接行從另一個表加入連接表
- 5. 如何添加一行到HTML表單?
- 6. 多表連接 - 我可以添加一個外連接嗎?
- 7. 如何添加一個SSH密鑰連接到GIT?
- 8. 如何在SQL中將表從一個連接鏈接到另一個連接?
- 9. 顯示:表格:如何將一個屬性添加到一行
- 10. 如何添加一行到一個表使用SWT
- 11. 如何將行添加到一個TableLayoutPanel
- 12. 如何用一個連接「連接」一個表格兩次?
- 13. 如何將左連接加入到另一個左連接
- 14. 添加到連接表
- 15. 如何將ID從一個表添加到另一個表?
- 16. MySQL的:如何添加一列從一個表到另一個
- 17. Sequelize.js - 添加一個項目到一個表格,連接到一個用戶在不同的表
- 18. 插入一行到一個表並添加一個序列
- 19. 添加另一個SSL連接
- 20. 如何添加一個按鈕鏈接到Gmail郵件列表
- 21. 如何添加一個動作鏈接到jQuery表?
- 22. 一類添加到一個錨鏈接
- 23. 將SKAction添加到Sprite隊列運行一個接一個
- 24. 如何從一個表使用連接獲取唯一行?
- 25. 如何向最後一個表格行添加一個類
- 26. 如何將一個表連接到多個其他表
- 27. 如何添加一個鍵,值對到一個列表?
- 28. 如何將一個空列表添加到一個元組
- 29. 如何添加一個ajax提交功能到一個表格
- 30. 如何將一個前綴添加到一個大列表中?
爲什麼不只是添加一個'parent_id'列? – tadman
您可以添加到'Categories'表'parent_category_id'字段。在此字段中,您將保存父類別的標識,如果此字段爲空,則類別位於頂層,否則它的子類別爲 –
,謝謝您的工作。 – Joma