Наскоро започнах да уча RoR и създавам хоби проект.
Така че малко бърза предистория: Всеки клиент се идентифицира с номер на сметка. Всяка продажба на продукт има приписан номер на сметка и таблицата с продукти съдържа всички конкретни данни за продукта.
Въпросът ми е - с формата, който имам сега, това ли е правилният начин, по който трябва да свързвам тези таблици? Един от проблемите, които имам, е филтрирането на група продажби въз основа на основни продукти. Да кажем, че имам клиент и искам да видя само продажбите на продукти, където основното е „търговско“, как да филтрирам тези данни? Вижте обхвата, който създадох - но не съм сигурен как да го използвам.
class Product < ActiveRecord::Base
has_many :product_sales, :primary_key => :prodnum, :foreign_key => :prodnum
has_many :customers, through: :sales
scope :commercial_products, -> { where(major: 'Commercial') }
end
class ProductSale < ActiveRecord::Base
belongs_to :customer, :foreign_key => :account
belongs_to :product, :foreign_key => :prodnum, :primary_key => :prodnum
end
class Customer < ActiveRecord::Base
has_many :product_sales, :primary_key => :account, :foreign_key => :account
has_many :products, through: :product_sales
end
и моята схема
create_table "customers", force: :cascade do |t|
t.integer "account"
t.string "name"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "product_sales", force: :cascade do |t|
t.integer "account"
t.string "month"
t.string "prodnum"
t.integer "sales"
t.integer "qtyshipped"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "products", force: :cascade do |t|
t.string "pcatcode"
t.string "pcatname"
t.string "major"
t.string "prodline"
t.string "brand"
t.string "tier"
t.string "prodnum"
t.string "proddesc"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
products.commercial
например. - person Leonel Galán   schedule 24.06.2016