0

如何使用其他模型在 after_save 中创建新记录?

我尝试了这条线,结果是“nil:NilClass 的未定义方法‘journals’”

例如

resources :users do
  resource :profile
  resources :journals
end


class User < ActiveRecord::Base
  has_one  :profile
  has_many :journals
end

class Profile < ActiveRecord::Base
  belongs_to :user

  after_save :create_new_journal_if_none

  private
    def create_new_journal_if_none
      if user.journals.empty? ????
        user.journals.build() ????
      end
    end
end

class Journals < ActiveRecord::Base
  belong_to :user
end
4

1 回答 1

1

一旦父级保存,嵌套模型也将被保存,因此很容易使用 before_create 块并在这里构建嵌套资源。

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)
于 2012-07-08T06:14:05.203 回答