我坚持了几个小时。这可能是一个快速解决方案,但现在我的大脑过热了。好吧,在这里。如何从Rails 2中不包含特定项目的多对多关系中选择特定记录?
我有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
任何帮助将不胜感激。
谢谢。
是的,它工作正常,有点语法变化,因为我有一些关于连接的语法错误。 session_types_44 =会话。find:(:all,:joins =>:session_types,:conditions => {:“session_types.id”=> 44})。 )“,session_types_44.collect {| s | s.id}]) – 2010-12-14 16:45:54