繁体   English   中英

使用ruby on rails和devise,如何创建另一个刚注册用户的模型实例(即第一次)?

[英]With ruby on rails and devise, how to create another model instance belonging to a user that has just registered (i.e. for the first time)?

我一直在寻找几个小时,以便找到解决以下问题的最佳做法:每次有新用户(使用devise)在我的应用上注册时,我都想创建3个默认的愿望清单,这些清单将属于该新用户,以便他/她可以稍后再填写。

 class User < ActiveRecord::Base has_many :wishlists, dependent: :destroy end class Wishlist < ActiveRecord::Base belongs_to :user end 

我已经阅读了一些主题相似的帖子,但从未满足我的需要,尤其是不修改注册表格并获取user_id以便正确创建关联的愿望清单。

因此,如果有人遇到相同的问题,这是我最终使用的解决方案(以下为答案)。

是否存在更好的做法? 很高兴阅读您的想法。

想必您的用户注册时会创建新的user记录吗? 如果是这样,我会将您的功能作为回调放入user模型中。

class User < ActiveRecord::Base
  has_many :wishlists, dependent: :destroy

  after_create :build_default_wishlists

  def build_default_wishlists
    self.wishlists << Wishlist.new(title: 'Hotels')
    self.wishlists << Wishlist.new(title: 'Food & Drinks')
    self.wishlists << Wishlist.new(title: 'Sightseeing')
  end 

  ...

end

我使用的解决方案是通过以下方式覆盖Devise Registration控制器:

 class Users::RegistrationsController < Devise::RegistrationsController protected def after_sign_up_path_for(resource) hotels = Wishlist.create!(title: 'Hotels', user: User.find(resource.id)) restaurants = Wishlist.create!(title: 'Food & Drinks', user: User.find(resource.id)) sightseeing = Wishlist.create!(title: 'Sightseeing', user: User.find(resource.id)) root_path end end 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM