Socialization allows any model to Follow and/or Like any other model. This is accomplished through a double polymorphic relationship on the Follow and Like models. But you don't need to know that since all the complexity is hidden from you.
Gemfile gem 'socialization', '~> 0.5.0.beta'
install gem install socialization -v 0.5.0.beta --pre