2014-11-08 2 views
0

У меня есть таблицы Подписокже внешний ключ используется два раза в таблице

break_points 

id: integer 
break_point_name: string 


schedules 

id: integer 
departure: int -> break_point_id 
arrival:int  -> break_point_id 
departure_date:date 
arrival_date: date 

Оба отправления и прибытия являются контрольными точками.

Тогда вместо этого я создам связь * с *?

1.9.3-p547 :004 > s=Schedule.find(1) 
    Schedule Load (0.1ms) SELECT "schedules".* FROM "schedules" WHERE "schedules"."id" = ? LIMIT 1 [["id", 1]] 
=> #<Schedule id: 1, departure_id: 1, departure_date: "2015-01-05", departure_time: 28800, arrival_id: 11, arrival_date: "2015-01-06", arrival_departure: 3600, bus_company_id: 1, created_at: "2014-11-08 22:55:00", updated_at: "2014-11-08 22:55:00"> 
1.9.3-p547 :005 > s.departure_break_points 
    BreakPoint Load (0.3ms) SELECT "break_points".* FROM "break_points" WHERE "break_points"."departure_id" = 1 
ActiveRecord::StatementInvalid: SQLite3::SQLException: no such column: break_points.departure_id: SELECT "break_points".* FROM "break_points" WHERE "break_points"."departure_id" = 1 
    from /home/fernando/.rvm/gems/[email protected]_master/gems/sqlite3-1.3.10/lib/sqlite3/database.rb:91:in `initialize' 
    from /home/fernando/.rvm/gems/[email protected]_master/gems/sqlite3-1.3.10/lib/sqlite3/database.rb:91:in `new' 
    from /home/fernando/.rvm/gems/[email protected]_master/gems/sqlite3-1.3.10/lib/sqlite3/database.rb:91:in `prepare' 

это мои миграции, которые генерируют таблицы базы данных

class CreateSchedules < ActiveRecord::Migration 
    def change 
    create_table :schedules do |t| 
     t.integer :departure_id 
     t.date :departure_date 
     t.time :departure_time 
     t.integer :arrival_id 
     t.date :arrival_date 
     t.time :arrival_departure 
     t.integer :bus_company_id 
     t.timestamps 
    end 

    end 
end 

     class CreateBreakPoints < ActiveRecord::Migration 
    def change 
    create_table :break_points do |t| 
     t.string :city 
     t.integer :province_id 
     t.timestamps 
    end 
    end 
end 
and these are my models 

Это мои модели

class BreakPoint < ActiveRecord::Base 
     attr_accessible :break_point_name, :city 
     belongs_to :province 
    end 

    class Schedule < ActiveRecord::Base 
    has_many :departure_break_points,class_name: "BreakPoint", :foreign_key => 'departure_id', :dependent => :destroy 
    has_many :arrival_break_points, class_name: "BreakPoint", :foreign_key => 'arrival_id', :dependent => :destroy 
end 

ответ

0

Добавить два соотношения в модели, но указать внешний ключ

has_many :departure_break_points,class_name: "BreakPoint", :foreign_key => 'departure' :dependent => :destroy 
    has_many :arrival_break_points, class_name: "BreakPoint", :foreign_key => 'arrival', :dependent => :destroy 
+0

Kimooz но a dd, что для модели Schedule.A запускается ошибка –

+0

Разве break_points не имеет много графиков? – Kimooz

+0

В расписании нет 2 break_points. прибытие и отъезд –

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

  • Нет связанных вопросов^_^