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 件のコメント:
コメントを投稿