Cześć, jak byście ustawili relację między dwoma modelami np Produkt i Cena, tak żeby dało się sprawdzić ile mamy produktów w cenie 1,99 a ile w cenie 2,29 , zrobić to na zasadzie:
Produkt belongs_to cena i Cena has_many produkt
Tylko wtedy chyba trzeba sprawdzać czy mamy już taką cenę w bazie i jeżeli jest to przypisać tylko id ceny do produktu a jeżeli nie ma to stworzyć nową cenę w dobrym kierunku
To nie jest dobry pomysł, bo cena nie jest obiektem tylko własnością obiektu - jak zmieniasz cenę jednego obiektu, to przecież nie zmieniają się ceny wszystkich pozostałych obiektów mających tę samą cenę. Zwykłe zapytanie group_by powinno załatić sprawę. Jak będą problemy z wydajnością to wystarczy założyć indeks na cenie. I tyle w temacie.
Jeszcze mam takie pytanko :
Użytkownik ma “portfel” w PLN i EURO czy powinny być to pola usera. Czy wydzielić to do osobnych tabel wallet_pln o polach np id, balance, last_balance i odpowiednio dla EURO
Dwie tabele? Wydaje mi się to złym pomysłem. Raczej już daj jedną tabelę i dodaj kolumnę ‘currency’. A co z klientem, który posługuje się dwiema walutami? (oczywiście strzelam, bo nie znam logiki aplikacji). Gdyby absolutnie nigdy klient nie mógł mieć dwóch walut jednocześnie, równie dobrze mógłbyś te same pola włączyć w tabelę klienta. W przeciwnym razie w tabeli ‘portfeli’ daj pole ‘client_id’ (czyli wallet.belongs_to :client)
[quote=sebcioz]A jak będzie więcej walut (dojdzie USD), to będziesz dopisywał nowe kolumny?
Ja bym zrobił model Wallet z kolumnami currency, balance, last_balance i do Usera dopisał has_many :wallets.[/quote]
to chyba najrozsądniejsze rozwiązanie.