0

誰でも私のSqlクエリをRailsクエリに変換できますか???

SELECT DISTINCT conversation_cbgs.* FROM "conversation_cbgs" 
INNER JOIN "message_cbgs" 
ON "message_cbgs"."conversation_cbg_id" = "conversation_cbgs"."id"  
INNER JOIN "user_message_cbgs" 
ON "user_message_cbgs"."message_cbg_id" = "message_cbgs"."id" 
WHERE "user_message_cbgs"."user_id" = 1 
ORDER BY conversations_cbgs.updated_at DESC
4

3 に答える 3

1

モデルが正しく構築されていると仮定すると (ちなみに、これは質問に答える人にとっては役に立ちます)、次のようになります。

Conversation.select("DISTINCT conversation_cbgs.*")
  .joins(:messages)
  .joins(:user_messages)
  .where("user_message_cbgs.user_id = ?", 1)
  .order("conversations_cbgs.updated_at DESC")

スコープやマージなどを使用する方法は他にもありますが、お見せできるモデルを投稿していません。

于 2012-12-05T05:58:36.320 に答える
0

最初にテーブル間の関連付けを確立する必要があります。関連付けがある場合は、問題として表示します。
または
、次の方法でこのクエリを実行できますModel.find_by_sql(sql_query)

于 2012-12-05T05:58:17.403 に答える
0
 ConversationCbg.find(:all, :conditions=>["user_message_cbgs.user_id=?",1], :joins=>"As conversation_cbgs inner join  message_cbgs on message_cbgs.conversation_cbg_id=conversation_cbgs.id inner join user_message_cbgs on user_message_cbgs.message_cbg_id=message_cbgs.id" , :select=>"Distinct conversation_cbgs.*", :order=> "conversations_cbgs.updated_at desc")
于 2012-12-05T05:59:04.967 に答える