2012-04-30 30 views
1

在我的Rails應用程序中,我有一個過濾器,它顯示了所有基於傳入我的範圍的參數的所有工作,所有工作正常,但作爲擴展,我有一個ajax調用,您可以根據您在過濾器中選擇的項目和客戶端選擇的作業。這裏是我的關係:在軌道上加入紅寶石的麻煩

客戶端有很多項目
一個項目屬於一個客戶端,有許多工作
一個工作屬於項目

我可以列出所有基於客戶端和所有項目基於項目的工作,但是我遇到的問題是隻列出指定客戶時的所有工作,因此,爲該客戶獲取所有項目,然後獲取所有這些項目的所有工作。

我猜我不得不使用一個連接來得到這個工作,但試了幾天,沒有運氣:(

如果任何人都可以點我一個很好的資源我的方向可以查看,試圖解決這個問題,將不勝感激

+3

希望有用:http://guides.rubyonrails.org/association_basics.html#the-has_many-through-association – sarnold

+0

完美的,正是我需要和現在工作。謝謝堆sarnold :) – Cristian

+0

優秀;如果你不介意在前後爲別人回答速寫速寫。 (我不記得這個功能足夠寫一個_良好的答案,但我確實有鏈接方便。) – sarnold

回答

1

之前此功能工作,模特們看上去如下 -

class Client < ActiveRecord::Base 
     has_many :projects 

    end 

    class Project < ActiveRecord::Base 
     belongs_to :client 
     has_many :jobs 

    end 

    class Job < ActiveRecord::Base 
     belongs_to :project 

    end 

爲了得到只有基於客戶喬布斯,通過關係的has_many不得不在客戶端模型中設置

class Client < ActiveRecord::Base 
     has_many :projects 
     has-many :jobs, :through => :projects 

    end 

然後在你的控制器,你可以使用這個新的關係打通客戶端ID的所有作業 -

@jobs = Client.find(params[:id]).jobs 

這將返回它找到的客戶端的所有作業。再次感謝sarnold鏈接到指南,讓我到這個解決方案

+0

好的答案!感謝您的寫作。 – sarnold