当用户注册时从模型创建资源
问题描述:
我正在尝试创建新用户注册时的资源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
但是这段代码不起作用。我该如何解决它?
答
如何:
class User < ApplicationRecord
after_create :create_mission
private
def create_mission
missions.create! location_id: 1, name: 'Mission 1'
end
end
现在你的错误可能是与create!
可见。尝试这个。
答
我不建议你在回调中建立关系。如果您需要在其他操作或控制台中创建用户,它将会伤害您。最好在控制器创建创建后(在未来的某个服务对象)
def create
if @user.save
@user.missions.create(...)
end
end
你也可以使用调试器来检查错误动态(随轨道https://github.com/deivid-rodriguez/byebug,只需要插入代码中的“调试”),可能你有一些验证错误。