Ruby on rails RAILS:如何在回调中创建新的collection.build?

Ruby on rails RAILS:如何在回调中创建新的collection.build?,ruby-on-rails,ruby-on-rails-3,model,callback,Ruby On Rails,Ruby On Rails 3,Model,Callback,如何在使用其他模型保存后在中创建新记录 我尝试了这一行,结果是“nil:NilClass的未定义方法'journals'” e、 g 资源:用户可以 资源:简介 资源:期刊 结束 类用户

如何在使用其他模型保存后在中创建新记录

我尝试了这一行,结果是“nil:NilClass的未定义方法'journals'”

e、 g

资源:用户可以
资源:简介
资源:期刊
结束
类用户
嵌套模型也将在父级保存后保存,因此在创建块和在此处构建嵌套资源之前很容易使用

class Profile < ActiveRecord::Base
  belongs_to :user

  before_create do 
    user.journals.build unless user.journals.any?
  end
end

你到底需要做什么?创建用户配置文件后创建新日志?是的,我需要在创建用户配置文件后自动创建日志(user.journals)。您的代码似乎有效,但请检查是否已创建适当的表和rails代码,并重新加载代码。也可能是创建的新配置文件未正确分配给用户。。因此,nil:NilClass error我为nil获取错误msg:undefined方法“journals”:NilClass@smileyUser你能展示一下你用来测试这个的代码吗?这将有助于了解您如何创建用户和配置文件,因为这可以让您了解用户为零的原因。@Ben这是一个简化版本,作为我实际项目的示例代码,它太大了。我当时一直得零分。我试图创建和更新只使用回调模型。user.profile已成功创建,但我无法创建新的user.journals(通过回调)作为结果“nil:NilClass的未定义方法'journals'。@smileyUser我强烈建议尝试使用此示例代码(使用测试用例),以便您可以确定一个最小的失败示例,或者找出您的复杂代码库与小示例之间的不同之处。@smileyUser copy粘贴完整堆栈跟踪,请使用行号和对应的代码行?第二,在创建前块中添加Rails.logger.error self.inspect,请提供更多详细信息
class Profile < ActiveRecord::Base
  belongs_to :user

  before_create do 
    user.journals.build unless user.journals.any?
  end
end
User.find(1).create_profile(name :test)