1

我在 MySQL 中有这个查询,我需要将它转换为 rails 活动记录:

select p.*,x.* from
(select * from users  ,roles_users
 where users.id=roles_users.user_id and roles_users.role_id not in(2,3)) as P
left join  
(select * 
  from cad_dispaths as T
 where `startdate_dispatch` = 
       ( select max(`startdate_dispatch`)
           from cad_dispaths
          where users_id = T.users_id ))  x 
on   x.users_id = p.user_id      
4

1 回答 1

2

我认为在这种情况下最好的解决方案是使用find_by_sql。一个重要的警告是,它旨在一次获取一种东西。我不知道你的应用程序的语义,所以我不能说这是否是这个查询正在做的事情,但似乎它可能不是。

例如,您可以这样做:

User.find_by_sql(your_sql)

这将返回满足该查询的用户对象的集合。任何额外的数据,截至我上次尝试这样的东西(rails 2.3.x),都会被塞入集合中每个对象的属性中。非常丑陋,但有时它可能比替代品更漂亮。

于 2012-12-30T11:10:44.477 回答