🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.ruby
2 messages
2 total messages Started by Adam Koczur Wed, 12 Sep 2007 11:29
struktura tabeli dla dokumentów magazynowych
#633
Author: Adam Koczur
Date: Wed, 12 Sep 2007 11:29
24 lines
1693 bytes
Witam,
Piszę w RoR aplikację do obsługi magazynu, a jestem bardzo początkujący 
jeśli chodzi o to środowisko. Mam takie modele:
contractor - dostawca/odbiorca
warehouse - magazyn
document_type - typ dokumentu magazynowego
transact - dokument magazynowy

struktura tabeli transact wygląda z grubsza następująco:
document_type_id
number
date
contractor_id
warehouse_id

wszystko jest ok dla transakcji pomiędzy magazynem a kontrahentem, czyli 
np: WZ, PZ, ale dla przesunięcia międzymagazynowego potrzebne bedzie pola 
dla magazynu źródłowego i docelowego.
Jak poprawnie zdefiniować zależności (i klucze obce) między modelami 
transact i warehouse? Chodzi o to, że warehouse_id jest automatycznie 
łączone z warehouses.id, a jak dodać kolejne pole wskazujące na 
warehouses.id (co wpisać przy has_many w modelu warehouse)?

Z góry wielkie dzięki.
Re: struktura tabeli dla dokumentów magazynowych
#634
Author: Jakub Kuźma
Date: Wed, 12 Sep 2007 18:02
35 lines
2169 bytes
Dnia Wed, 12 Sep 2007 11:29:20 +0000 (UTC)
Adam Koczur <adamkoczur@o2.pl> napisał(a):

> Jak poprawnie zdefiniować zależności (i klucze obce) między modelami 
> transact i warehouse? Chodzi o to, że warehouse_id jest automatycznie 
> łączone z warehouses.id, a jak dodać kolejne pole wskazujące na 
> warehouses.id (co wpisać przy has_many w modelu warehouse)?

Można to zrobić zastępując generowane zapytanie napisanym ręcznie:

- w modelu Warehouse:
has_many :transactions,
         :finder_sql 'SELECT w.* FROM warehouses w, transactions t' +
                     'WHERE w.id = t.warehouse1_id' +
                     'AND w.id = t.warehouse2_id'

- w modelu Transaction
belongs_to :warehouse1,
           :foreign_key => 'warehouse1_id',
           :class_name => 'Warehouse'
belongs_to :warehouse2,
           :foreign_key => 'warehouse2_id',
           :class_name => 'Warehouse'

Mam wrażenie, że za bardzo uogólniłeś te transakcje. Nie wiem np. w jaki
sposób będziesz oznaczał kierunek transakcji (a chyba to ważne).
Proponowałbym jeszcze raz wrócić do ERD i przeanalizować schemat bazy.

Nie mam czasu sprawdzać powyższego kodu, ale mam nadzieję, że coś Ci
się przyda. Pozdrawiam.

-- 
Jakub Kuźma
http://jah.pl/
JID oraz e-mail w domenie gmail.com, login - qoobaa
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads