我有两个表User(Devise)和Phones
我希望当用户注册时使用devise完成注册,user_id和手机类型被加载到Phones表中
但我不知道该怎么做。我已将用户与电话链接
User.rb
has_many :phones
Phones.rb
belongs_to :user
db(架构)
t.index ["user_id"], name: "index_phones_on_user_id"
任何帮助将不胜感激
答案 0 :(得分:4)
您可以在User
型号
after_create
回调
after_create :assign_phone
private
def assign_phone
phone = phones.new
# assign required values
phone.save
end
正如评论中所述,如果出现错误,phone.save
将默默返回false
,使用!(bang)
将引发错误,另一个解决方案是检查是否已保存或不然后执行你想要的任务..
def assign_phone
phone = phones.new
# assign required values
if phone.save
#on successfull save
else
#on failure
end
end
答案 1 :(得分:0)
在user.rb
中after_create :assign_phone
def assign_phone
phone = self.phones.build
phone.save
end
这样您将无法添加手机类型。但是,如果你想保存类型,那么你必须覆盖devise / registrations_controller.rb的“create”方法