查询 - Ruby Rails
Query - Ruby on Rails
我不了解Rails
请问,如何在 Rails 中进行此查询?
SELECT *, count(v.id) numero_votos FROM ideas i left join votes v on v.idea_id = i.id group by i.id order by numero_votos desc, i.created_at
我试过了...
@listOfIdeas = Idea.find(:all, joins: "LEFT JOIN 'votes' on votes.idea_id = ideas.id",
select: "ideas.*, count(votes.id) numero_de_votos",
group: "ideas.id",
order: "numero_de_votos DESC, ideas.created_at DESC")
但是,没有用,它向我显示了这条消息:
Couldn't find all Ideas with 'id': (all, {:joins=>"LEFT JOIN 'votes' on votes.idea_id = ideas.id", :select=>"ideas.*, count(votes.id) numero_de_votos", :group=>"ideas.id", :order=>"numero_de_votos DESC, ideas.created_at DESC"}) (found 0 results, but was looking for 2)
Rails版本:5.1.4
谢谢!
您的 SQL 查询看起来很奇怪。如果您的 sql 查询是:
SELECT i.*, count(v.id) AS numero_votos
FROM ideas i
LEFT JOIN votes v ON v.idea_id = i.id
GROUP BY i.id
ORDER BY numero_votos DESC, i.created_at
那么,您应该尝试以下操作:
Idea.select("ideas.*, count(votes.id) AS numero_votos ")
.joins("LEFT JOIN votes ON votes.idea_id = ideas.id")
.group("ideas.id")
.order("numero_votos DESC")
.order("ideas.created_at")
我不了解Rails
请问,如何在 Rails 中进行此查询?
SELECT *, count(v.id) numero_votos FROM ideas i left join votes v on v.idea_id = i.id group by i.id order by numero_votos desc, i.created_at
我试过了...
@listOfIdeas = Idea.find(:all, joins: "LEFT JOIN 'votes' on votes.idea_id = ideas.id",
select: "ideas.*, count(votes.id) numero_de_votos",
group: "ideas.id",
order: "numero_de_votos DESC, ideas.created_at DESC")
但是,没有用,它向我显示了这条消息:
Couldn't find all Ideas with 'id': (all, {:joins=>"LEFT JOIN 'votes' on votes.idea_id = ideas.id", :select=>"ideas.*, count(votes.id) numero_de_votos", :group=>"ideas.id", :order=>"numero_de_votos DESC, ideas.created_at DESC"}) (found 0 results, but was looking for 2)
Rails版本:5.1.4
谢谢!
您的 SQL 查询看起来很奇怪。如果您的 sql 查询是:
SELECT i.*, count(v.id) AS numero_votos
FROM ideas i
LEFT JOIN votes v ON v.idea_id = i.id
GROUP BY i.id
ORDER BY numero_votos DESC, i.created_at
那么,您应该尝试以下操作:
Idea.select("ideas.*, count(votes.id) AS numero_votos ")
.joins("LEFT JOIN votes ON votes.idea_id = ideas.id")
.group("ideas.id")
.order("numero_votos DESC")
.order("ideas.created_at")