Perhaps rather than using attr_accessor for the service url we should write our own setter and validate the url early so we can fail early rather than waiting until the ticket has already been saved and retrieved to realize the url is poorly formatted or even malicious.
```ruby
attr_reader :service
def service=(url)
  @service = RubyCAS::Server::Core::Util.clean_service_url(url)
end
```