我有一个非常简单的问题我如何将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函数时获得此结果是否有人帮助我。