Я пытаюсь создать студенческий портал в Rails 3, но у меня возникли некоторые проблемы.
Идея состоит в том, чтобы создать таблицу пользователей, которая содержит все основные данные для данного человека.См. UML / ER ниже для примера атрибутов.
- Пользователь может быть одновременно Помощник и Ученик одновременно.
- Помощник и Ученик должен наследовать от Пользователь .
Идея заключалась в том, чтобы наследовать непосредственно от пользователя, как это.
class User < ActiveRecord::Base
# ...
def awesome?
[true, false].sample
end
# ...
end
class Student < User
has_one :student
has_many :registered_courses, through: :students
end
Student.new.awesome?
Это делает отношения в модели студента очень странными.has_many :registered_courses, through: :students
В конце я хочу сделать что-то подобное.
student.full_name
student.pin_code
student.registered_courses
Одним из решений будет ручная реализация метода, например,
class Student < User
has_one :student
def pin_number
student.pin_number
end
end
Но выглядит действительно странно, если ссылаться на объект студента внутри модели студента.
Есть ли более ясный и лучший способ сделать это?
Вот пример UML / ER,Я пытался сохранить этот пример в чистоте, удаляя не соответствующие атрибуты.Вот почему в зарегистрированном объекте курса так мало атрибутов.
![uml](https://i.imgur.com/oDnYS.png)