Nie należy oczekiwać, że aplikacja będzie generowana samodzielnie przez rusztowanie. Ma służyć jedynie jako przykład do rozpoczęcia pracy.
Najbardziej elastyczny rodzaj relacji wiele do wielu w szynach nazywa się has many through. Wymaga to tabeli łączenia, która w tym przypadku jest zwykle nazywana "kategoryzacją". Wymagałoby to kolumny product_id
zadeklarowanej jako belongs to :product
i kolumny category_id
zadeklarowanej jako belongs_to :category
. Te trzy modele (w tym modelu join) zostanie ogłoszony w następujący sposób:
# 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
Zauważ, że ja o nazwie kolumny name
zamiast prd_name
ponieważ jest zarówno czytelny dla człowieka i unika redundantny powtórzenia nazwy tabeli. Jest to szczególnie zalecane podczas korzystania z szyn.
Modele mogą być generowane w ten sposób:
rails generate model product name
rails generate model category name
rails generate model categorisation product:references category:references
Jak do generowania rusztowania, można zastąpić model
z scaffold
w pierwszych dwóch poleceń. Znowu jednak nie polecam tego, z wyjątkiem sposobu, aby zobaczyć przykład, z którego można się uczyć.
To nie jest prawda (więcej), patrz odpowiedź Rui Castro. – slhck