2017-10-16 8 views
0

新しいユーザーがサインアップされるときにリソースMissionを作成しようとしています。ミッションには外部キーLocationもあります。ユーザーがサインアップするときにモデルからリソースを作成する

class User < ApplicationRecord 
    after_create :create_mission 

    private 
    def create_mission 
    Mission.create(user: self, location_id: 1, name: 'Mission 1') 
    end 
end 

しかし、このコードは残念ながら機能しません。どうすれば解決できますか?

class User < ApplicationRecord 
    after_create :create_mission 

    private 
    def create_mission 
    missions.create! location_id: 1, name: 'Mission 1' 
    end 
end 

今、あなたのエラーがcreate!で見ることができます。これについてはどのよう

答えて

1

。これを試して。

1

コールバックでリレーションを作成することはお勧めできません。別のアクションまたはコンソールでユーザーを作成する必要がある場合は、あなたを傷つけるでしょう。より良いおそらく、

def create 
    if @user.save 
    @user.missions.create(...) 
    end 
end 

(将来的には、いくつかのサービスオブジェクトに)作成した後、コントローラにそれを作成するそして、あなたは(ちょうどあなたのコード内で「デバッガ」を挿入し、レールhttps://github.com/deivid-rodriguez/byebugに同梱)を動的エラーをチェックするためにデバッガを使用することができますいくつかの検証エラーがあります。

関連する問題