У меня есть 3 модели, но ассоциация немного сложна.Проблема с Rails Model Associations
Сначала у меня есть пользователи, и для двух разных типов пользователей у меня есть две разные модели профиля, которые являются Pteacher и Pstudent.
Вещь также у каждого Pteacher есть 1 Pstudent.
Так что я сделал такие модели;
class User < ActiveRecord::Base
validates_uniqueness_of :uname
has_many :pteachers
has_many :pstudents
end
class Pteacher < ActiveRecord::Base
has_one :pstudent
belongs_to :user
end
class Pstudent < ActiveRecord::Base
has_one :pteacher
belongs_to :user
end
И теперь, если я пройти первый выбор пользователя, чем при выборе Pteacher, чем при выборе Pstudent как User.pteacher.pstudent, он не дает мне ошибку метода.
НО
Если я выбираю Pteacher непосредственно, чем я могу выбрать Pstudent с Pteacher.pstudent.
Проблема в том, что я хочу, чтобы пройти через User=>Pteacher=>Pstudent
Есть ли способ для достижения этой цели?
Кстати, я узнаю, что я не могу связаться ни с одним из методов Pteacher, если я создам его из User. Например, если я пишу в Rails Console;
user = User.first #Which is a teacher
user.pteachers #This line gives me all the info about that users pteacher
#now funny part
pt = user.pteacher #this works too as now i have pt as a Pteacher which have all the data i want
pt.id #fails???
pt.name #fails???
pt.pstudent #fails???
pt #writes all info about pteacher which has id and name
has_many должно быть множественным, не так ли? Что произойдет, если вы просто используете User.pteacher? – re5et
похоже работающий. Дело в том, что некоторые из них - учителя, некоторые из которых - студенты. Поэтому, если пользователь является учеником, чем User.pteacher возвращает пустой массив, но если пользователь является учителем, чем User.pteacher возвращает свой профиль. – gkaykck
. Основная проблема, если я сначала выбираю пользователя, а не Pteacher rest. Но если я не касаюсь Пользователя, прямо выберите Pteacher, чем это работает. Проклятые рельсы! – gkaykck