【问题标题】:Rails 3.2 has_one build: undefined method serialized_attributes for nil:NilClassRails 3.2 has_one build:nil:NilClass 的未定义方法 serialized_attributes
【发布时间】:2014-02-19 01:16:03
【问题描述】:

我正在使用 Rails 3.2。我正在尝试为 has_one 关系构建一个对象(每个驱动程序都有一个 cdl_driving_license)。我以前做过很多次类似的任务,而且效果很好。这种特殊情况我不断收到此错误:

undefined method `serialized_attributes' for nil:NilClass

这是我的相关代码:

驱动程序.rb

has_one :cdl_driving_license, dependent: :destroy
accepts_nested_attributes_for :cdl_driving_license, :allow_destroy => true

cdl_driving_license.rb

belongs_to  :driver 

drivers_controller.rb

def new
 @driver = Driver.new
 @driver.build_cdl_driving_license
 #more code...
end

知道是什么导致了这个错误吗?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3.2 associations


    【解决方案1】:

    在您的新方法中,您是否尝试执行以下操作: @driver.cdl_driving_license.build(此处为 cdl 驾驶执照的参数)?

    【讨论】:

    • 没有。据我了解,如果关联是使用 has_one 定义的,我们使用“build_association”函数。对于 has_many,它应该是“association.build”。就我而言,我有一个 has_one 关联..
    • 我刚刚将关联更改为 has_many,并使用了“@driver.cdl_driving_licenses.build”。通过这些更改,我仍然从“构建”行中收到相同的错误“nil:NilClass 的未定义方法序列化属性”..
    【解决方案2】:

    想通了。我试图建立的记录属于一个表,该表包含一个具有保留名称的列(我有一个名为“类”的列)。呃!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-01
      • 1970-01-01
      • 2012-03-15
      • 1970-01-01
      • 2013-04-09
      相关资源
      最近更新 更多