Ruby on rails 使用RubyonRails和Desive,如何创建另一个属于刚刚注册(即首次注册)的用户的模型实例?

Ruby on rails 使用RubyonRails和Desive,如何创建另一个属于刚刚注册(即首次注册)的用户的模型实例?,ruby-on-rails,ruby,devise,Ruby On Rails,Ruby,Devise,为了找到解决以下问题的最佳实践,我花了几个小时寻找:每次有新用户在我的应用程序(使用Desive)上注册时,我想创建3个属于该新用户的默认愿望列表,以便他/她以后可以填写 class用户

为了找到解决以下问题的最佳实践,我花了几个小时寻找:每次有新用户在我的应用程序(使用Desive)上注册时,我想创建3个属于该新用户的默认愿望列表,以便他/她以后可以填写

class用户结束
我使用的解决方案是以这种方式覆盖设计注册控制器:

类用户::注册控制器<设计::注册控制器
受保护的
注册后的def路径(资源)
hotels=Wishlist.create!(标题:“酒店”,用户:user.find(resource.id))
餐厅=愿望列表。创建!(标题:“食品和饮料”,用户:user.find(resource.id))
观光=愿望列表。创建!(标题:“观光”,用户:user.find(resource.id))
根路径
结束

结束
当您的用户注册时,是否会创建一个新的
用户
记录?如果是这样,我会将您的功能作为回调放入
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
class用户self.wishlists为什么不在用户注册时在用户上添加一个
方法来创建愿望列表呢?这一切都完成了,但是既然我们在这里。。。您在上面进行了6次数据库查询,3次查找用户(可避免),3次创建愿望列表。如果您按照上面答案中的建议进行操作,则只有3次对数据库的调用(b/c用户已经知道)。谢谢Matt。这也非常有效,正如@sunild.所说,数据库查询确实更少。我将用你的建议来代替我所做的。