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 に答える