ruby on rails - রুবি ক্লাসের নাম কিভাবে পাবো?




ruby-on-rails rails-activerecord (4)

আপনি বস্তুর ক্লাসে .name কল করতে চান:

result.class.name

কিভাবে আমি ActiveRecord বস্তুর থেকে ক্লাসের নাম পেতে পারি?

আমার আছে:

result = User.find(1)

আমি চেষ্টা করেছিলাম:

result.class
# => User(id: integer, name: string ...)
result.to_s
# => #<User:0x3d07cdc>"

আমি শুধুমাত্র একটি স্ট্রিং (এই ক্ষেত্রে User ) মধ্যে ক্লাস নাম প্রয়োজন। যে জন্য একটি পদ্ধতি আছে?

আমি এটা বেশ মৌলিক জানি, কিন্তু আমি Rails 'এবং রুবি এর ডক্স উভয় অনুসন্ধান, এবং আমি এটি খুঁজে পাচ্ছি না।


আমার ক্ষেত্রে যখন আমি Module1::class_name . Module1::class_name মত কিছু ব্যবহার করি আমি Module1::class_name মত কিছু পেয়েছিলাম। কিন্তু আমরা শুধুমাত্র class_name চাই, ব্যবহার করুন

result.class.table_name.singularize


এখানে সঠিক উত্তর দেওয়া হয়েছে, ড্যানিয়েল রিকোস্কি এবং পিসিডম্যানের মন্তব্য থেকে বেরিয়ে এসেছে। আমি সঠিক উত্তর খুঁজে পেতে মন্তব্যের মাধ্যমে আগাছা হচ্ছে ক্লান্ত করছি ...

যদি আপনি Rails (ActiveSupport) ব্যবহার করেন:

result.class.name.demodulize

আপনি যদি POR (প্লেইন-অল-রুবি) ব্যবহার করেন:

result.class.name.split('::').last

যদি আপনি ক্লাস ক্লাসের ভিতর থেকে ক্লাসের নাম পেতে চান, class.name বা self.class.name কাজ করবে না। এগুলি কেবল Class আউটপুট হবে, যেহেতু ক্লাসের বর্গ Class । পরিবর্তে, আপনি শুধু name ব্যবহার করতে পারেন:

module Foo
  class Bar
    def self.say_name
      puts "I'm a #{name}!"
    end
  end
end

Foo::Bar.say_name

আউটপুট:

I'm a Foo::Bar!






rails-activerecord