2013-07-24 2 views
0

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

enter image description here

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

Когда пользователь подписывается, они добавляют ученическую группу (или класс), заполняют ее учащимися, а затем добавляют предметы. Позже они добавляют цели для каждого предмета - хотя там должен также быть целями для student_group, ученика или даже пользователя. Я думал о чем-то вроде this - но было бы лучше, как has_many, через отношения?

Прямо сейчас, я действительно сделал работу над моделями User, Student_group и Student, и они довольно прямолинейны. У пользователя много ученических групп, а у student_group много учеников. Я хотел бы получить второе мнение, прежде чем продолжить, так что мне не нужно возвращаться и заниматься. Благодаря!

+0

Что пользователь в вашей базе данных, пользователь только администратор, или пользователь может быть студентом, преподавателем или чем-то еще? –

ответ

1

Думаю, вы можете подумать слишком далеко. После того, как ваше приложение будет построено вокруг вашей текущей модели данных, вы будете лучше знать, хотите ли вы его расширить, включив концепцию цели, которая не является частью предмета студента. Если вы решите, что это так, то создание целей принадлежит субъекту, ученику или пользователю будет довольно простым. В этот момент вы также можете сделать что-то вроде

Class Student 
    has_many :personal_goals, class_name: "Goal" 
    has_many :goals, through: :subjects 

    def all_goals 
    goals + personal_goals 
    end 

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

+0

На самом деле я не знал о 'has_many: yxs, class_name:" x "' так спасибо за это. и я думаю, что вы правы также - это гораздо более простой способ сделать эту работу и, в конечном счете, лучше. ура! – dax

0

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

User 
has_many :student_groups 
has_many :students, through: :student_groups 
has_many :goals, as: :goalable 

StudentGroup 
belongs_to :user 
has_many :students 
has_many :goals, as: :goalable 

Student 
belongs_to :student_group 
has_many :subjects 
has_many :characteristics 
has_many :goals, as: :goalable 

Characteristic 
belongs_to :student 

Goal 
belongs_to :goalable, polymorphic => true 

Я определил некоторые полиморфные ассоциации в вашей схеме. Если вам нужна ссылка, связанная с этой ассоциацией. visit http://guides.rubyonrails.org/association_basics.html

Надеюсь, это поможет вам. Благодарю.

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