如何将mysql查询转换为Rails ORM?

时间:2015-07-29 19:32:38

标签: ruby-on-rails sql-server rails-activerecord

我有一个非常简单的问题我如何将mysql查询转换为Raisl活动记录我使用的是find_by_sql但它只适用于mysql,当我移动到heroku它不起作用。这是下面的mysql查询。

   @message3 = User.find_by_sql("SELECT u.id,c.m_id,u.name,u.email
         FROM messages c, users u
         WHERE CASE 
         WHEN c.user_one = #{current_user.id}
         THEN c.user_two = u.id
         WHEN c.user_two = #{current_user.id}
         THEN c.user_one= u.id
         END 
         AND (
         c.user_one ='1'
         OR c.user_two ='1'
         )
         Order by c.m_id DESC Limit 20")

我尝试过不同的规则来运行它并没有成功。我在下面使用了以下代码:

   @m1 = Message.joins(:user).select("users.id,messages.m_id,users.name,users.email
,CASE WHEN messages.user_one =#{current_user.id} THEN messages.user_two =users.id WHEN messages.user_one =users.id THEN messages.user_two =1 END").where("messages.user_one = 1 OR messages.user_two = 1 ").limit(20).order(:m_id)

但是上面的代码没有生成正确的结果,我有两个模型 用户和消息他们的关系是用户has_many消息和消息belons_to用户当我使用此代码时,我得到的结果是json格式,没有错误。

[{"m_id":55,"id":55,"name":"Example  User","email":"nilay@jumpbook.in","CASE WHEN messages.user_one =1 THEN messages.user_two =users.id WHEN messages.user_one =users.id THEN messages.user_two =1 END":0}]

我如何完美地使用此查询以及为什么我在此查询中使用select函数时获得此结果是否有人帮助我。

0 个答案:

没有答案