blake.app

Rails presence

While we are on the subject of Rails helper methods (yesterday was .parameterize), I learned about the .presence method today thanks to some wonderful feedback from ZogStriP on one of my commits.

I wrote this ternary operator and was pretty happy with myself that I turned a multi-line method I was writing down to one line:

def get_parameterized_title
  SiteSetting.title.parameterize.empty? ? "discourse" : SiteSetting.title.parameterize
end

Did you notice that I had to use SiteSetting.title.parameterize twice? Pretty annoying right? Well, even though I tried to google for a better way of doing a ternary operator in ruby, and didn’t find what I was looking for. It turns out there is a better way! You just need to use the Rails .presence method:

def get_parameterized_title
  SiteSetting.title.parameterize.presence || "discourse"
end

So much cleaner!