Ruby on Rail - формат для извлечения и отображения выпадающего Dymanic - PullRequest
1 голос
/ 12 февраля 2011

У меня есть 3 таблицы: Student, Subject и Score.
Каждый студент может добавить 3 оценки по предметам (физика, математика и химия).
Комбинация (student_id + subject_id) добавлена ​​в таблицу Score. То есть, при захвате этого sudent '1' были добавлены оценки по математике с фактическим счетом (скажем, диапазон 0-100)

student id :    subjectid     Score
    1           Mathematics    95 

Страница Add из Score имеет выпадающий список "subject". который отображается из таблицы «субъект».

Когда студент хочет добавить оценки 2-го предмета, на странице добавления ему не следует отображать превентивный предмет в раскрывающемся списке.

Может кто-нибудь сказать мне, как это сделать?

1 Ответ

0 голосов
/ 12 февраля 2011

Да, вы можете сделать это следующим образом (Rails 3.0):

class Subject
  scope :not_enrolled_in, lambda{ |user| where("NOT EXISTS(SELECT id FROM scores WHERE user_id = ? AND subject_id = subjects.id)", user.id) }
end

Или так в Rails 2.x:

class Subject
  named_scope :not_enrolled_in, lambda{ |user| { :conditions => ["NOT EXISTS(SELECT id FROM scores WHERE user_id = ? AND subject_id = subjects.id)", user.id] } }
end

Затем вы можете получитьсписок субъектов, которые текущий пользователь не зарегистрировал таким образом:

Subject.not_enrolled_in(current_user).all

Затем вы можете использовать этот список в выбранном вами HTML-коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...