Да, вы можете сделать это следующим образом (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-коде.