2015-02-24 4 views
0

Я довольно новичок в Rails, поэтому это может показаться основным вопросом.Ruby on rails many-to many relationship

Я создаю приложение для кино и требую таблиц «Заказы» и «Ticket_Type».

Заказы имеют следующие атрибуты: user_id, show_id, adult_seats, child_seats, concession_seats.

Ticket_Type будет иметь следующие атрибуты: тип, цена.

Эти отношения были бы многими для многих, поскольку в одном бронировании могло быть много типов билетов, например, имея 2 взрослых и 2 детей, а один тип билета, например «Ребенок», мог иметь много заказов.

Но как я могу отобразить это в Ruby on Rails? Или было бы, если бы стол между ними назывался что-то вроде Booking_Ticket, который хранит booking_id и ticket_type_id?

Что мне понадобится для моего приложения, чтобы рассчитать, например, общую стоимость бронирования - так что если в бронировании есть 2 взрослых, 1 уступка и 2 ребенка, а в билетной кассе взрослый стоит 7,50, концессия 6 , а ребенок 5, то общая сумма будет 31.

ответ

0

Я действительно не думаю, что есть связь между Bookings и TicketType. TicketType - это всего лишь таблица настроек в приложении, в которой вы храните данные о ценах. Поскольку adult_seats, child_seats, concession_seats являются целыми значениями, между двумя таблицами нет прямой связи.

Все, что вам действительно нужно TicketType для справки о стоимости. Кажется, что эта таблица не содержит большого количества данных; Я бы просто загрузил эти данные до определения стоимости бронирования.

+0

Загрузить эти данные откуда? Таким образом, вы говорите, что не имеете таблицу 'TicketType', но где будут сохраняться цены? –

+0

Нет, я этого не говорю. Я говорю, что ваша таблица TicketType содержит «статические, реляционные» данные. Вам не нужно связывать его с «Заказом». В методе, где вы рассчитали стоимость, загрузите данные ценообразования через AR-вызов: 'pricing = TicketType.all'. Затем укажите билет при расчете стоимости: 'adult_cost = pricing.find {| p | p.type.eql? ('adult')}. цена * adult_seats' – tagCincy

+0

Хорошо, просто чтобы убедиться, что я на той же длине волны. Имеются книги в виде таблицы и TicketType в виде таблицы, но между ними нет никакой связи. Сохраните данные в типе TicketType, например. Взрослый: £ 10, а затем в модели Bookings.rb есть метод, который получает все цены через 'pricing = TicketType.all', а затем вычисляет стоимость каждого отдельного билета через' pricing.find {| p | p.type.eql? ('adult')}. цена * adult_seats'? –