railsで部員一覧と、学部一覧というのをもっているwebページを作りました。
modelでの関係性は以下の通りです。
部員一覧 (member)
belongs_to 学部一覧
学部一覧 (gakubu)
has_many 部員一覧
そして、今回やりたいこととしましては、memerのコントローラーのcreateメソッドにおいてtransactionの処理を追加したいです。
尚、このcreateメソッドでやっていることは、部員登録の際に新規で学部も登録できるといった処理です。
ただ、この場合、部員登録のフォームに複数のバリデーションを設定しているため、
メンバーの登録ができなくとも、学部の登録だけが出来てしまいます。
それを防ぐためにtransaction処理を追加したいのですが、
上手く機能してくれませんでした。
以下の記述でもエラーは出ないものの、transactionしてくれませんでした・・・。
何に原因があるのでしょうか?
宜しくお願いします。
#members_controller.rb def create @member = Member.new(member_params) gakubu = Gakubu.find_or_create_by(name: params[:gakubu][:name]) @member.gakubu_id = gakubu.id if @member.save redirect_to members_url else render :new end end
↓↓
transactionの処理追加後
#members_controller.rb def create ActiveRecord::Base.transaction do @member = Member.new(member_params) gakubu = Gakubu.find_or_create_by(name: params[:gakubu][:name]) @member.gakubu_id = gakubu.id if @member.save redirect_to members_url else render :new raise ActiveRecord::Rollback end end end
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/06/07 09:15
2015/06/07 09:16
2015/06/07 14:50
2015/06/09 15:51