Mam pewien problem z relacjami. Myślę że nie mam co się zbytnie rozwodzić, pastie: http://pastie.org/465483 .
Z góry dzięki za wszelką pomoc.
Tak na oko to to chyba nie powinno działać ?? W has_many :order_items nie ma polimorfizmu nic, mozesz dodac , :as => :item i w modelu Package dodaj belongs_to :item, , :polymorphic => true …
http://apohllo.pl/guides/association_basics.html#_asocjacje_polimorficzne
EDIT:
po spojzeniu na Pastie zastanawiam sie ze nie do konca Ci chyba o to chodzilo [quote=swistaczek]…Myślę że nie mam co się zbytnie rozwodzić, pastie: http://pastie.org/465483 …[/quote]
Wypadalo by sie chociaz troche rozwiesc
Chcę osiągnąć coś takiego: mam taki jakby mały sklep. Są tam zamówienia i elementy zamówień (order items), do elementów zamówień mogą należec różne rzeczy (np. paczki [model packages], albo domeny [model domains]). Modelu domains jeszcze nie wstawiłem wyżej, gdyż go nie ma, ale chodzi mi o łatwą możliwość rozbudowy, dlatego biję w polimorficzność.
To zrob tak jak napisałem, i kazdy nowy element zamowienia powinien zawierac belongs_to :item, :polymorphic => true i odpowiadac na spojny interfejs i powinno byc dobrze …
Chyba nie do końca rozumiem, bo coś mi nie działa http://pastie.org/465807
edycja:
>> Order.first.order_items
=> []
ale to już działa, idzie jakoś zaliasować żeby było Order.first.items ?
Jednak nie http://pastie.org/465810
No moze nie jestem na biezaco z tym ja widze i uzylbym tu poprostu dziedziczenia chyba…
choc nie pomoge to odnosnie nazewnictwa jak masz w modelu Order:
has_many :order_items, :as => :item
Oznacza to ze Order ma order_items jako :item, tzn pozwala Ci to na
order_item.item
item.order_item
tak wiec :item z tego przypadku powinno okreslac zamowienie czyli np order
, owner lub cos takiego :). Wiec jak chcesz miec odwoloanie przez
Order.first.items musisz dac
has_many :items, :as => :owner
i w modelach nalezacych do zamowienia
belongs_to :owner, :polymorphic => true