FWIW, calling `#create` calls `#valid?` internally. When you call `#valid?` directly it wipes the errors and re-validates the object (calling all the validations a second time).

A more idiomatic pattern is:

```Ruby
@post = Post.new(params[:post])

if @post.save
...
```

`#save` returns a boolean that is the result of (is the object valid && did it get saved to the DB)