多くのグループを持つプロジェクト モデルがあります。グループには、メンバーシップ モデルを通じて多くのユーザーがいます。プロジェクトには少なくとも 1 つのグループが必要です。新しいプロジェクトを作成するときは、デフォルト グループを作成し、現在のユーザーをメンバーにする必要があります。
私は 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
このアクションには 3 つの問題があります。
- 取引なし。ユーザーがプロジェクトのデフォルト グループに追加されない場合があります。
- この行
@project.groups.first.members << current_user
はコントローラに含めるべきではありません。 - を使用しています
accepts_nested_attributes_for
。私はそれを使用しないことを好みますが、必要に応じて使用し続けます。