I think you can also move the initialization of first and last name up into the `first_or_initialize` method like:

```ruby
user = User.where(email: extractor.email).first_or_initialize(
  first_name: extractor.first_name,
  last_name: extractor.last_name,
  public_key: extractor.public_key
)
```