在Devise中创建用户时创建待办事项列表

时间:2014-12-09 19:44:40

标签: ruby-on-rails ruby-on-rails-4 model-view-controller devise controller

我正在尝试构建待办事项列表应用程序,当用户通过Devise注册时,也会同时创建预先填充的待办事项列表。

我设置了标准的Devise控制器(确认,omniauth_callbacks,密码,注册,会话和解锁),以及to_do_list控制器和list_item控制器。同样,我有User,ToDoList和ListItem模型。

默认情况下,用户属于待办事项列表,list_items也属于to_do_list。 (稍后,多个用户需要属于同一个待办事项列表。)我将在何处以及如何将创建一个to_do_list和多个list_items的代码放在哪里?

谢谢!

2 个答案:

答案 0 :(得分:0)

创建逻辑(以及CRUD的其余部分)应放在用于显示列表的视图的控制器中。

另外我认为你可能会倒退,todo列表应该属于用户。因此,如果您要找到一个列表,您可以通过User - >找到它。列表

答案 1 :(得分:0)

这样的事情会起作用:

<强> user.rb

after_create :create_list

def create_list
  @list = ToDoList.create(user_id: self.id)
  # add list items to @list
end

http://apidock.com/rails/ActiveRecord/Callbacks/after_create

after_create()

在Base.save之后调用尚未保存的新对象(不存在记录)。请注意,此回调仍包含在围绕保存的事务中。例如,如果此时调用外部索引器,则不会在数据库中看到更改。

<强>更新

<强> to_do_list.rb

after_create :create_list

def create_list_items
  # let's say you have an array of list_items
  items = ['item1', 'item2', 'item3', 'item4']
  items.each do |item| 
    ListItem.create(content: item, to_do_list_id: self.id)
  end
end