【发布时间】:2010-12-14 15:22:23
【问题描述】:
我坚持了几个小时。这可能是一个快速的解决方案,但我的大脑现在过热了。好的,就是这样。
我有 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
任何帮助将不胜感激。
谢谢。
【问题讨论】:
标签: mysql ruby-on-rails model many-to-many