Rails嵌套关联导致nil对象

时间:2014-11-21 01:13:54

标签: ruby-on-rails ruby ruby-on-rails-3

我有这三种模式:

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

我得到错误“未定义的方法`all'为nil:NilClass”

1 个答案:

答案 0 :(得分:0)

由于Garden是一个has_many,它应该设置为has_many :gardens

修改:garden_customer也设置为has_one个关系,因此每garden_customer只有garden个,因此garden.garden_customer.all错误。 garden.garden_customer本身会直接为您提供相关的garden_customer,前提是它是在创建过程中设置的。