计算链接表中的记录作为mysql / rails查询的一部分

时间:2016-01-12 11:19:46

标签: mysql ruby-on-rails ruby

我有一个必须显示大约一千条记录的视图。这些是来自客户的想法(如建议墙)。我正在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

1 个答案:

答案 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')