将新用户存储到另一个模型

时间:2015-07-21 09:23:06

标签: ruby-on-rails ruby devise

我有书架模型,里面有数据。

bookshelf: id, book_id, user_id, is_read:false

我需要将所有新用户id传递/添加到所有现有user_id的书架book_id

//user.rb
has_many :bookshelfs
has_many :books, through: :bookshelfs


//bookshelf.rb 
belongs_to :user
belongs_to :book

我使用设计宝石。我需要在regestrations_controller.rb中写什么?

def create
    super
    ... 
 end

1 个答案:

答案 0 :(得分:1)

您可以在用户模型中添加class User < ActiveRecord::Base ... after_create :add_to_all_existing_books ... private def add_to_all_existing_books Book.where(is_read: false).each do |b| Bookshelf.create(book_id: b.id, user_id: self.id, is_read: false) end end end 挂钩,这样,无论何时创建新用户,您都会将他添加到书架。

{{1}}