Я предполагаю, что отношения следующие:
User:
has_many :personals
has_many :events, :through => :personals
Event:
has_many :personals
has_many :users, :through => :personals
Personal:
belongs_to :event
belongs_to :user
Мое решение состоит в том, чтобы использовать автоматически созданную функцию ассоциации для пользователя "event_ids", которая перечисляет все идентификаторы событий в User.events.Запрос, чтобы получить то, что вы пытаетесь сделать, должен быть:
Event.find(:all, :include => :personals, :conditions => ["events.id NOT IN (?)", @user.event_ids])
И, если вам действительно не нужно объединение, вы можете упростить:
Event.find(:all, :conditions => ["events.id NOT IN (?)", @user.event_ids])
Ключ - это SQLКоманда «НЕ В (х)».Кроме того, обратите внимание, что «events.id» является множественным числом для имени модели, в соответствии с соглашением SQL.
Надеюсь, это поможет ...