2016-01-12 42 views
0

我有一個必須顯示大約一千條記錄的視圖。這些是來自客戶的想法(如建議牆)。我在SQL中執行查詢,因爲它速度更快。所以在controller我有兩個actions。這些都是作爲mysql/rails查詢的一部分計數鏈接表中的記錄

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然後我可以做

@ideas.each do |idea| 
    = i['description'] 
    %br 
    = i['notes] 

等,這變成15秒的查詢到兩秒鐘一個。但是,雖然我可以很容易地從ideasusers表中獲取所有數據,但我需要一些更復雜的數據。

每個idea都有idea_likes表中的likes。我需要在ideas_index_data查詢中包含每個想法的喜歡次數。所以我需要擴展連接並選擇查詢的部分,但目前爲止沒有喜悅。任何人都可以幫忙在idea_likes表引用與idea_id

回答

1

ideas表,我會嘗試這樣的事:

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') 
相關問題