On m'a récemment conseillé d'utiliser, pour les relations de mon application rails actuelle, la gemme ensemble imbriqué . ( Ma précédente discussion / question ici ) J'ai actuellement 3 modèles,
Catégories a beaucoup de sous-catégories
Les sous-catégories appartiennent aux catégories et ont de nombreux produits.
Le produit appartient à la sous-catégorie. Je voulais l'afficher comme suit
+Catégorie
----Sous-catégorie
--------Produit
--------Produit
----Sous-catégorie
--------Produit
--------Produit
+Catégorie
----Sous-catégorie
--------Produit
--------Produit
Si je devais faire cela dans nested_set, comment le configurer dans mes modèles ? Est-ce que je supprimerais mes modèles de sous-catégorie et de produit, et j'ajouterais simplement acts_as_nested_set dans le modèle de catégorie ? et une fois que j'ai le modèle en place, avec quoi vais-je mettre à jour les actions de mes contrôleurs, pour pouvoir créer des noeuds dans l'ensemble imbriqué que j'ai créé ?
Je pense qu'il faut juste m'aider à comprendre comment je peux faire le CRUD, la création, la lecture, la mise à jour et la destruction de cette liste nested_set.
Voici un peu de code que j'ai déjà
Catégories Contrôleur :
class CategoriesController < ApplicationController
def new
@category = Category.new
@count = Category.count
end
def create
@category = Category.new(params[:category])
if @category.save
redirect_to products_path, :notice => "Category created! Woo Hoo!"
else
render "new"
end
end
def edit
@category = Category.find(params[:id])
end
def destroy
@category = Category.find(params[:id])
@category.destroy
flash[:notice] = "Category has been obliterated!"
redirect_to products_path
end
def update
@category = Category.find(params[:id])
if @category.update_attributes(params[:category])
flash[:notice] = "Changed it for ya!"
redirect_to products_path
else
flash[:alert] = "Category has not been updated."
render :action => "edit"
end
end
def show
@category = Category.find(params[:id])
end
def index
@categories = Category.all
end
end
Catégorie Modèle :
class Category < ActiveRecord::Base
acts_as_nested_set
has_many :subcategories
validates_uniqueness_of :position
scope :position, order("position asc")
end
Modèle de sous-catégorie :
class Subcategory < ActiveRecord::Base
belongs_to :category
has_many :products
scope :position, order("position asc")
end
Enfin, le modèle de produit :
class Product < ActiveRecord::Base
belongs_to :subcategory
has_many :products
scope :position, order("position asc")
end
Toute aide serait très appréciée.