Non dovresti essere in grado di generare la tua app tramite il ponteggio da solo. Serve solo a fornire un esempio per iniziare.
Il tipo più flessibile di relazione molti-a-molti nei binari è chiamato has many through. Ciò richiede una tabella di join che in genere si chiamerebbe "categorizzazione" in questo caso. Sarebbe necessaria una colonna product_id
dichiarata come belongs to :product
e una colonna category_id
dichiarata come belongs_to :category
. I tre modelli (tra cui il modello di join) sarebbero dichiarati così:
# Table name: products
# Columns:
# name:string
class Product < ActiveRecord::Base
has_many :categorisations
has_many :categories, through: :categorisations
end
# Table name: categories
# Columns:
# name:string
class Category < ActiveRecord::Base
has_many :categorisations
has_many :products, through: :categorisations
end
# Table name: categorisations
# Columns:
# product_id:integer
# category_id:integer
class Categorisation < ActiveRecord::Base
belongs_to :product
belongs_to :category
end
Nota che ho chiamato le colonne name
piuttosto che prd_name
dal momento che questo è sia leggibile ed evita la ripetizione ridondante del nome della tabella. Questo è altamente raccomandato quando si usano le rotaie.
I modelli possono essere generati in questo modo:
rails generate model product name
rails generate model category name
rails generate model categorisation product:references category:references
quanto riguarda la generazione del ponteggio, è possibile sostituire con model
scaffold
nei primi due comandi. Ancora una volta, io non lo consiglio, tranne come un modo per vedere un esempio da cui imparare.
Questo non è vero (più), vedere la risposta di Rui Castro. – slhck