Я застрял с этим на пару часов. Это может быть быстрое решение, но мой мозг перегрелся. Хорошо, вот оно.
У меня есть модели Session и SessionType, которые имеют отношения «многие ко многим» друг с другом следующим образом.
class Session < ActiveRecord::Base
...
has_and_belongs_to_many :session_types
...
end
class SessionType < ActiveRecord::Base
...
has_and_belongs_to_many :sessions
...
end
То, что я хочу, это получить сеанс, который не содержит какого-либо определенного session_type, например,
Session.find(:all, :joins => [:session_types], :conditions => ["session_types.id <> 44"])
Это не работает для меня, так как вышеупомянутый запрос все равно даст мне сеансы, у которых session_types.id "44" во многих его ассоциациях из-за характера отношений "многие ко многим".
Также следующий код mysql также не работает.
select sessions.* from sessions
INNER JOIN `session_types_sessions` ON `session_types_sessions`.session_id = `sessions`.id
WHERE ( session_types_sessions.session_type_id NOT IN (44))
GROUP BY sessions.id
Любая помощь будет оценена.
Спасибо.