Many to Many m:n Association
order has many products, products has many orders.
In that case, we need one more table to make association.
Example
rails generate model product name 'price:decimal{7,2}' rails generate model order delivery_address rails generate model line_item order_id:integer product_id:integer quantity:integer
Model class
order.rb
class Order < AcriveRecord::Base has_many :line_items has_many :products, :through => :line_items end
product.rb
class Product < AcriveRecord::Base has_many :line_items has_many :orders, :through => :line_items end
lineitem.rb
class LineItem < ActiveRecord::Base belongs_to :order belongs_to :product end [/ruby] <h3>Database</h3> Product <pre> id:integer price:decimal{7,2} </pre> Order <pre> stirng:delivery_address </pre> LineItems <pre> order_id:integer product_id:integer quantity:integer </pre> <h3>Create</h3> [ruby] milk = Product.create(name:'Milk(1 litter)', price:0.45) butter = Product.create(name:'Bugger(250 gr)', price:0.75) flour = Product.create(name:'Flour(1kg)', price:0.45) order = Order.new(delivery_address:'Queen Street11') order.products.count order.line_items.create(product_id:butter.id, quantity:2) order.products Order.first.products order.reload # order is updated order.products order2 = Order.create(delivery_address:'2 Hill Street') order2.products << Product.all order2.save Product.first.orders Order.joins(:products).where(:products => {name:'Milk(1 litter)'})