2015-01-26 3 views
0

Мне нужна помощь по извлечению данных из других моделей и правильной справочной справочной системе в Rails. Например, у меня есть приложение Rails, в котором содержится информация о гонке. Здесь у меня есть автомобили, класс автомобилей, события и гонки. У меня есть, где я могу создать автомобиль, который является частью класса автомобилей, однако я не знаю, как я буду участвовать в соревнованиях и гоночной части. Надеюсь, все это имеет смысл, поскольку я все еще пытаюсь обмотать голову вокруг себя. Я использую Rails версии 4.1.6.Ссылка на другие данные из других моделей

Также, если кто-то может придумать лучшее название для этого вопроса, я был бы признателен.

автомобилей класса: Это класс, что автомобиль принадлежит. Все автомобили должны быть в классе. Это должно содержать всю информацию о классе автомобилей.

Модель:

class CarClass < ActiveRecord::Base 
    has_many :cars 
end 

Автомобили: Автомобили принадлежат в классе, как вы можете увидеть в моделях CarClass и Car. Это должно содержать все детали о машинах.

Модель:

class Car < ActiveRecord::Base 
     belongs_to :car_class 
end 

Событие: событие, где класс автомобиль гонки. Он будет содержать информацию о мероприятии, однако сведения о классе и автомобиле будут храниться CarClass и Car, как указано выше. Должно быть возможно получить список всех автомобилей для мероприятия. Я предполагаю, что Event будет иметь много Racing.


Гонки Это должно держать статистику о гонке на автомобиле за основу. Например, какое место они входили, время отслеживания и т. Д. Предполагаю, что Racing будет принадлежать Event.

+0

класс Автомобиль neo

+0

Спасибо за вашу помощь Нео, я исправил проблему. –

ответ

0

Это довольно классическая ситуация has_many through:. Которая является отношением «многие ко многим» между двумя моделями с промежуточной моделью, действующей в качестве таблицы соединений. Использование отдельной модели здесь для таблицы соединений позволит вам хранить дополнительные данные для расов, а не только соединение между автомобилями и событиями.

Вы можете сделать следующее:

class Racing < AR::Base 
    belongs_to :car 
    belongs_to :event 
end 

class Event < AR::Base 
    has_many :racings 
    has_many :cars, through: :racings 
end 

class Car < AR::Base 
    has_many :racings 
    has_many :events, through: :racings 

    belongs_to :car_class 
end 

class CarClass < AR::Base 
    has_many :cars 
end 

Вы можете прочитать больше о Rails ассоциаций in the guides.

Это позволит вам получать доступ к событиям от автомобилей и наоборот. Также вы можете добраться до автомобильных классов от мероприятия. Например класс первого автомобиля первого события:

Event.first.cars.first.car_class 

Когда петля через ассоциацию не забудьте использовать includes, где это необходимо.

+0

Как бы класс автомобиля играл в это? Я предполагаю, что автомобиль по-прежнему «принадлежит» в car_class? –

+0

@SeldonStone отредактировал мой ответ с 'CarClass' – tmichel

+0

Я уверен, что это, вероятно, правильно, поэтому я собираюсь отметить это как ответ. Знаете ли вы, как я буду создавать форму для этого мероприятия? Например, если я выбираю класс автомобиля на мероприятии, я бы хотел, чтобы он добавил все автомобили из этого класса автомобилей в «гоночные» и имел их под этим событием. Прямо сейчас я могу только подумать о том, может ли быть «для @ cars.each», а затем прокрутить все автомобили этого класса и добавить их один за другим каким-то образом ... но это мне кажется неправильным. Это похоже на другой вопрос ... дайте мне знать, если я его создам. –

Смежные вопросы