Ruby およびプログラミング全般の初心者。これまでのところ、私が持っていた質問に対する答えを見つけるのに問題はありませんでしたが、これは見つかりません.
私のアプリでは、Teams コントローラーの new および create アクションが、関連付けられた複数のモデルにわたって複数の新しいレコードを作成しています。これらのレコードの 1 つが作成に失敗しています。これは、下位のレコードが以前に@pool_user
実行されているように見えるため、 nil であり、email を null にすることはできないためです。@department
@department.id
テストするために、行を削除して特定の値を下@pool_user
に挿入すると、期待どおりの順序で実行され、期待どおりにすべてのレコードが作成されました。:userid =>
@competence
User モデルに Devise を使用していますが、最初に初期化することに影響を与えている可能性がありますが、正しい順序で実行する方法を見つけることができないようです。
team_controller.rb
def new
@team = Team.new
@department = Department.new
@competence = Competence.new
@pool_user = User.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @team }
end
end
def create
@team = Team.new(params[:team])
@department = @team.departments.build(:organization_id => User.current.organization_id, :team_id => @team.id)
@pool_user = @team.users.build(:email => @department.id).save(:validate => false)
@competence = @team.competences.build(:team_id => @team.id, :user_id => @pool_user.id)
respond_to do |format|
if @team.save
format.html { redirect_to @team, notice: 'Team was successfully created.' }
format.json { render json: @team, status: :created, location: @team }
else
format.html { render action: "new" }
format.json { render json: @team.errors, status: :unprocessable_entity }
end
end
end
ここに表示されている他の悪い慣行や一般的な初心者の動きを自由に修正してください。正しい順序で構築されていない理由を理解したいだけです。ありがとう。