2016-04-29 3 views
0

Я определяю структуру данных для маршрутизации авиакомпаний.поля дизайна, которые ссылаются на запись из другой таблицы

Ожидаемое использование будет так

Route.find(1).from_airport # NRT 
Route.find(1).to_airport # KIX 
Route.find(2).from_airport # NRT 
Route.find(2).to_airport # TPE 

Однако, я не хочу, чтобы определить значение строки в FROM_AIRPORT поле или TO_AIRPORT поле.

Данные о аэропортовых сборах сохраняются в таблице аэропортов.

Как я могу определить его в Ruby on Rails?

Он принадлежит к логике has_one на таблице маршрутов, и нет никакой логики принадлежности к аэропорту.

Модель: Route (В моей мысли)

has_one :from_airport, foreign_key: "id??", class_name: "Route" 
has_one :to_airport, foreign_key: "id??", class_name: "Route" 

Airports стол

id:1 name: NRT, city: TOKYO, country: JAPAN 
id:2 name: KIX, city: OSAKA, country: JAPAN 

Маршруты стол

from_airport: # it should NOT be a string, it should refers to a record in Airports table eg: airport (id:1) 
to_airport: # it should NOT be a string, it should refers to a record in Airports table eg: airport (id:1) 

ответ

0

Является ли это то, что вы ищете?

# routes.rb 
belongs_to :from_airport, foreign_key: :from_airport_id, class_name: "Airport", primary_key: :id 
belongs_to :to_airport, foreign_key: :to_airport_id, class_name: "Airport", primary_key: :id 
Смежные вопросы