Two things:

`is_published` should be `published?`, IMHO and if possible.

The method body should just be

``` ruby
self.data.has_key?('published') && self.data['published']
```

No need for the if/else there.