2017-10-16 103 views
0

我正在尝试创建新用户注册时的资源Mission。 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 

但是这段代码不起作用。我该如何解决它?

回答

1

如何:

class User < ApplicationRecord 
    after_create :create_mission 

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

现在你的错误可能是与create!可见。尝试这个。

1

我不建议你在回调中建立关系。如果您需要在其他操作或控制台中创建用户,它将会伤害您。最好在控制器创建创建后(在未来的某个服务对象)

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

你也可以使用调试器来检查错误动态(随轨道https://github.com/deivid-rodriguez/byebug,只需要插入代码中的“调试”),可能你有一些验证错误。

相关问题