2012-04-27 6 views
1

Итак, у меня есть две модели: User and ScheduledSessionRails 3. has_many как еще один класс

У пользователей есть роли. Одна из ролей - «инструктор».

ScheduledSession 
belongs_to :instructor, :class_name => 'User', :foreign_key => 'instructor_id' 

User 
has_many :scheduled_sessions 

ХОРОШЕЕ! Поэтому я могу это сделать ...

s = ScheduledSession.first 
s.instructor 

BAD! Но я не могу это сделать ...

u = User.first 
u.scheduled_sessions 

я получаю эту ошибку ...

SQLite3::SQLException: no such column: scheduled_sessions.user_id: SELECT "scheduled_sessions".* FROM "scheduled_sessions" WHERE "scheduled_sessions"."user_id" = 1 
ActiveRecord::StatementInvalid: SQLite3::SQLException: no such column: scheduled_sessions.user_id: SELECT "scheduled_sessions".* FROM "scheduled_sessions" WHERE "scheduled_sessions"."user_id" = 1 

Как я могу настроить отношения наоборот, так что я могу видеть, какие запланированы сессии принадлежит этот инструктор (пользователь)?

ответ

4

Вам просто нужно установить внешний ключ в отношении пользователя has_many.

has_many :scheduled_sessions, :foreign_key => 'instructor_id' 
+0

такой простой, удивительный! Благодарю. (ему просто нужна запятая прямо перед: foreign_key) – leonel

+0

Я исправил ее в случае, если кто-то другой натолкнулся. –

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