我有一个项目模型,有很多组。 Group通过Membership模型拥有许多用户。项目必须至少有一个组。在创建新项目时,我必须创建其默认组,并使当前用户成为成员。
我不想使用ActiveRecord回调,但我很想知道使用它们的解决方案是如何工作的。我正在使用accepts_nested_attributes_for
来创建项目和默认组。
def create
@project = Project.new(project_params)
if @project.save
@project.groups.first.members << current_user
redirect_to @project
else
render 'new'
end
end
此操作有三个问题:
@project.groups.first.members << current_user
不应位于控制器中。accepts_nested_attributes_for
。我不想使用它,但如果必须,我会继续使用它。答案 0 :(得分:0)
project.rb
def add_new_user(user_id)
self.groups.first.members << User.find_by_id(user_id)
self.groups.first.members.count == 1
end
controller.rb
def create
@project = Project.new(project_params)
if @project.save && @project.add_new_user(current_user.id)
redirect_to @project
else
render 'new'
end
end