class User < ActiveRecord::Base has_many :projects end class Project < ActiveRecord::Base belongs_to :user #nameというカラムを持っています。 endバリデーションに引っ掛かった場合は例外をthrow。
DBの更新時にエラーが発生した場合も例外をthrow。
例外の種類によって、メッセージを分けたい場合は、rescueを追加してもいいかもしれません。
def update begin @user = User.find(params[:id]) @user.valid? #validation throw ActiveRecord::RecordInvalid Project.transaction do @user.update_attributes!(params[:user]) @user.projects << Project.new(name: "test_name") end respond_to do |format| format.html { redirect_to @user, notice: t("general.success_update") } end rescue respond_to do |format| format.html { render action: "edit" } end end end
0 件のコメント:
コメントを投稿