Would it be nicer to use try here? So 
```ruby
conversation.try(:public_send, action) 
```
This will return nil if it is unsuccessful when calling the method via exception etc. Or it will properly execute performing the action defined. Because nil evaluates to false this will all work the same so this is just a refactor.

Let me know what you think.