Wpis z mikrobloga

#ror #ruby #rubyonrails #webdev
Hej mirki, mam problem.
Mam trzy modele - Film, Użytkownika oraz Zamówienie.
Model Zamówienie to tabela łączona (has_many :through) pomiędzy filmami i użytkownikami (relacja wielu-do-wielu). Ta tablica łączona ma jednak dodatkowe pola (np. status - zrealizowane bądź nie). Powiedzmy, że mam użytkownika oraz film - jak teraz napisać w kontrolerze instrukcje, które pozwolą mi na stworzenie tej tabeli Zamówienie z dodatkowym parametrem? samo
user.movies << movies (tak, ogólnie to po angielsku piszę :P )
Mnie nie urządza. Wiem, że mogę zrobić user.orders, ale jak wtedy wyciągnąć odpowiedni order?
  • 9
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@przemkow:
Serio? Wiadomo, nowe ładniejsze i szybsze w pisaniu, ale o taką syntaktyczną pierdołę zwracać uwagę? :)
Jedynie chyba jako symbol tego, że człowiek nie jest na bieżąco z rozwojem technologii.

@Daronk:
Co do wymienionej własnie wyżej nowej składni - Order.create!(user: user, movie: movie, status: 'new')
  • Odpowiedz
@przemkow: U mnie w robocie nie zwracaja :) Wiadomo, czytelnosc kodu wazna, ale w Ruby nie ma zadnych oficjalnych standardow. Jest bbatsov, ale to jest nieoficjalne, choc swietne.
  • Odpowiedz
@Ragnarokk: Spoko, używam nowej składni więc nawet z automatu to napisałem tak, jak proponujesz. Mam jeszcze jedną zagwozdkę. Czy da się to zrobić jakoś optymalnie
def usermovies
user = User.find(current
user.id)
orders = user.orders.where("status = true")
moviesids
  • Odpowiedz
@Daronk:
user = User.find(currentuser.id) - zbędne, do wywalenia. Używasz current_user :)

Można to na pewno skrócić wybieranie moviesids mapem:

movies_ids =
  • Odpowiedz