How to get human readable class name in Ruby on Rails?
I am building an application with Ruby 1.9.3 and Rails 3.0.9
I have a class like below.
module CDA class Document def humanize_class_name self.class.name.gsub("::","") end end end
I want the class name like "CDADocument".
Is my humanize_class_name method is the correct way to achieve this?
OR
Any other built in methods available with Rails?
Answers
I think Rails might have something similar, but since the form you want is peculiar, you will have to design the method by yourself. The position where you define it is wrong. You would have to do that for each class. Instead, you should define it in Class class.
class Class def humanize_class_name name.delete(":") end end some_instance.class.humanize_class_name #=> the string you want
or
class Object def humanize_class_name self.class.name.delete(":") end end some_instance.humanize_class_name #=> the string you want
If you using i18n you can call Model.model_name.human to get the localized model name.
E.g.: Event.model_name.human returns my localized name.
Docs: http://api.rubyonrails.org/classes/ActiveModel/Name.html#method-i-human
Need Your Help
php long polling using mysql
I found a script that uses php long polling.create if doesn't exist function in ActiveRecord?
sql ruby-on-rails ruby-on-rails-3 activerecord ruby-on-rails-3.2
I'm using Rails 3.2.8. I need to create a status record if a status record doesn't already exist. If a status record exists, I don't do anything. So my code is something like this: