2013-08-16 27 views
0

如何調用查詢結果的方法,在Rails的 我有以下在我的項目控制器代碼如何調用查詢結果的方法,在Rails的

高清inprogress_report @projects = Project.all

@project_list = Project.find_by_sql(「select p.id,p.name,(select sum(i.estimated_hours)from i where i.project_id = p.id)as estimated_hours,(select sum(t.hours)from time_entries t where p .id = t.project_id)作爲Spent_Hours,(從用戶u中選擇u.firstname,其中u.id IN(從成員m中選擇user_id,其中m.project_id = p.id和m.id IN(從member_roles選擇member_id,其中role_id IN (從角色r中選擇id r.na me)')'))))1)作爲協調者,(從u中選擇u.firstname u.id IN(從成員m中選擇user_id,其中m.project_id = p.id和m.id IN(select member_id from member_roles where role_id IN(從r中選擇id(其中r.name ='Project Manager'))))限制1)作爲項目經理從項目p其中p.status IN('16','14','15',' 17' , '18', '19', '20')通過p.id組「)

現在我想就@project_list結果

,所以我已經把

@project_list = @project_list.search(params[:search]) 
serch主頁

並在我的project.rb中有

def search(search) 
    if search 
    where('name LIKE ?', "%#{search}%") 
    else 
    find(:all) 
    end 
end 

,但給我的錯誤未定義的搜索方法...

我可以使用活動記錄:: Base.connection.select_all以上的查詢和結果,我想進一步排序是可能的PLZ指導我

+0

'search'是未定義'project_list',它只會爲你的模型中定義。 'find_by_sql'返回一個'數組'。 –

+0

我可以使用Active Record :: Base.connection.select_all爲上述查詢和結果我想進一步排序是可能的plz指導我 –

回答

0

馬克西米利安 - 蓋斯是正確的,但因爲它可能需要一段時間來改寫find_by_sql方法調用,我會重寫search方法調用使用由find_by_sql方法調用返回的數組,如果的大小結果數組是合理的。換句話說,而不是,:

@project_list = @project_list.search(params[:search]) 

放像:

@project_list.keep_if{ |p| /.*#{params[:search]}.*/.match p.name } 
+0

給我undefined keep_if方法錯誤爲零類錯誤 –

+0

你能提供確切的錯誤嗎?這聽起來像@project_list是零。 – keisuke

+0

NoMethodError(undefined method'keep_if'for#): app/controllers/projects_controller.rb:90:在'report' –

相關問題