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 回答