2014-11-21 43 views
0

我有三個型號:Rails的嵌套協會導致nil對象

class Project < ActiveRecord::Base 
    has_many :garden 
end 

class Garden < ActiveRecord::Base 
    belongs_to :project 
    has_one :garden_customer 
    validates_uniqueness_of :idjardin, :message => "Este codigo jardin ya esta utilizado" 
end 

class GardenCustomer < ActiveRecord::Base 
    belongs_to :garden 
end 

如果我運行project=Project.find(1)然後garden=project.garden.find(1)一切正常。但是,當我嘗試獲得花園客戶時,我得到了一個零對象而不是空數組或值,即:

garden.garden_customer 

爲零。

我無法在garden.garden_customer上調用任何方法。代碼

例子:

@project=Project.find(params[:project_id]) 
@garden = @project.garden.find(params[:garden_id]) 
@garden_customers = @garden.garden_customer.all 

我得到了錯誤 「爲無未定義的方法`所有」:NilClass」

+0

顯示代碼在哪裏創建garden_customer – Anand 2014-11-21 01:21:28

+0

@Anand代碼添加到問題 – Kerby82 2014-11-21 01:23:39

+0

試試這可能嗎?花園belongs_to花園客戶 – Peege151 2014-11-21 01:39:55

回答

0

由於Garden是的has_many,它應該是建立像has_many :gardens

編輯:另外garden_customer設置爲has_one關係,所以只有garden_customergarden,所以garden.garden_customer.all是錯誤的。 garden.garden_customer本身會直接給你相關的garden_customer,前提是它是在創建過程中設置的。

+0

這是一個has_one的關係 – Kerby82 2014-11-21 01:42:45

+0

has_one是garden_customer,我正在談論花園項目 – 2014-11-21 01:45:06

+0

好吧,但這並不能解決問題我不能調用新的和所有garden_customer – Kerby82 2014-11-21 01:48:14