我有一个“请求”对象的列表,每个对象具有相当正常的活动记录质量.请求表与具有连接表’games_requests’的游戏表相关联,使得请求具有request.games数组.
问题是,有没有办法找到最后一个唯一的请求,其中唯一性是由游戏列和其他几个定义的,但特别是忽略其他列(如请求用户的名字?)?
我看到一个语法,如“find(:all,:limit => 5,:include => [:games,:stage])’,但这是返回的重复.
谢谢…
编辑:感谢混乱的一个很好的回应.你让我真的很亲近,但我仍然需要返回是有效的请求对象:在请求的行中不同的前5个记录.我可以在构建它时使用find,然后对表中与第一个查找返回的每个集匹配的第一行进行第二次查找.
编辑:
Games.find( :all,:limit => 5,:include => [:games,:requests],:group => 'games,whatever,whatever_else' )
MysqL::Error: Unknown column 'games' in 'group statement': SELECT * FROM `games` GROUP BY games
我做了一些改变,我认为对我的项目是正确的;获取请求列表而不是游戏等:
Request.find( :all,:order=>"id DESC",:limit=>5,:include=>[:games],#including requests here generates an sql error :group=>'games,etc' #MysqL error: games isn't an attribute of requests :conditions=>'etc' )
我想我将不得不使用:join =>选项这里.
解决方法
Games.find( :all,whatever_else' )