我有一个包含许多组的项目模型。一个组通过成员资格模型拥有许多用户。一个项目必须至少有一个组。创建新项目时,我必须创建它的默认组,并使当前用户成为成员。
我不想使用 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
. 我不想使用它,但如果必须,我会继续使用它。