---
title: Use save! or handle return values
impact: HIGH
impactDescription: Ensure database operations are properly validated and errors are not silently ignored.
tags: rails, database, validations, active-record
---

## Use save! or handle return values

Ensure database operations are properly validated and errors are not silently ignored. Use bang methods (`save!`, `create!`, `update!`, `destroy!`) to raise exceptions on failure. If using non-bang methods, always check the return value.

**Incorrect:**

```ruby
def create
  @user = User.new(user_params)
  @user.save # Failure will be silent
  redirect_to @user
end
```

**Correct:**

```ruby
def create
  @user = User.new(user_params)
  if @user.save
    redirect_to @user
  else
    render :new
  end
end

# Or using bang
def create
  @user = User.create!(user_params)
  redirect_to @user
end
```

**Tools:** RuboCop (`Rails/SaveBang`)
