Difference between underscore, tableize and self.class.model

Hey all,

Not sure what the difference between underscore and tableize, other than
tableize also pluralizes. However, not sure how they can be used
differently. Obviously, you can use tableize to reference table name in
database. But what different functionality does underscore provide?
Also, what different functionality would calling self.class.model, where
model is a model. Basically, while I know what these three are, I’m not
sure how they can be used differently.
Thanks for any suggestions.