我有一个必须显示大约一千条记录的视图。这些是来自客户的想法(如建议墙)。我正在SQL中进行查询,因为它的速度要快得多。所以在<file src="cassette-cache\**" target="Content" />
我有两个controller
。这些是
actions
在def index
@ideas = ideas_index_data
end
def ideas_index_data
ideas = Idea.publically_visible
.select(
"ideas.*, concat(users.first_name, ' ', users.last_name) as user_name ")
.joins("inner join users on users.id = ideas.users_id")
ActiveRecord::Base.connection.exec_query(ideas.to_sql)
end
我可以做
view
等。这将15秒的查询变为两秒的查询。然而,虽然我可以轻松地从@ideas.each do |idea|
= i['description']
%br
= i['notes]
和ideas
表中获取所有数据,但我需要更复杂的东西。
每个users
都有idea
表中的likes
个数字。我需要在idea_likes
查询中包含每个想法的喜欢计数。所以我需要扩展连接并选择查询的各个部分,但到目前为止还没有任何乐趣。谁能帮忙。 ideas_index_data
表使用idea_likes
ideas
表
答案 0 :(得分:1)
我会尝试这样的事情:
ideas = Idea.publically_visible
.select(
"ideas.*, concat(users.first_name, ' ', users.last_name) as employee_name, COUNT(employee_likes.id) as number_likes ")
.joins("inner join users on users.id = ideas.users_id left join employee_likes.idea_id = ideas.id")
.group('ideas.id, users.id')