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を使用することだと思います。重要な注意点は、一度に 1 つの種類のものをフェッチするように設計されていることです。あなたのアプリケーションのセマンティクスがわからないので、このクエリがそれを行っているかどうかはわかりませんが、そうではない可能性があります。

たとえば、次のことができます。

User.find_by_sql(your_sql)

そのクエリを満たすユーザー オブジェクトのコレクションを返します。前回このようなことを試したとき (rails 2.3.x) の時点で、余分なデータはコレクション内の各オブジェクトの属性に押し込まれます。かなり醜いですが、代替品よりもきれいな場合があります.

于 2012-12-30T11:10:44.477 に答える